打印
[DemoCode下载]

NUC970开发资源

[复制链接]
120117|1073
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
游客,如果您要查看本帖隐藏内容请回复

有点大,东西比较丰富,大家保存自己网盘吧。
沙发
gaoyang9992006|  楼主 | 2018-1-23 18:35 | 只看该作者
昨天有朋友找我要新唐一些官方没有公开的资料,我找到分享给他们了。970这个,我后来才下载到,不好找啊。o(* ̄︶ ̄*)o,所以回复可见。给我鼓励啊。

使用特权

评论回复
板凳
yiyigirl2014| | 2018-1-23 20:00 | 只看该作者
经常看到论坛有人找,都找不到,什么好东西啊,看看。

使用特权

评论回复
地板
神的棋子| | 2018-1-25 14:43 | 只看该作者
这种好东西一定要及时的存起来

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2018-1-25 14:49 | 只看该作者
神的棋子 发表于 2018-1-25 14:43
这种好东西一定要及时的存起来

是的,赶紧的。

使用特权

评论回复
6
zhifeng| | 2018-1-25 15:19 | 只看该作者
看看是什么宝贝

使用特权

评论回复
7
ewayne| | 2018-1-25 16:04 | 只看该作者
最近很想牛皮糖的972 谢谢了

使用特权

评论回复
8
heisexingqisi| | 2018-1-26 10:05 | 只看该作者
绝密资料啊。

使用特权

评论回复
9
zhjerry| | 2018-1-26 10:26 | 只看该作者
kankan

使用特权

评论回复
10
fendoushuai| | 2018-1-26 13:18 | 只看该作者
学习学习

使用特权

评论回复
11
dongnanxibei| | 2018-1-26 16:14 | 只看该作者
1 开发环境介绍
开发环境连线
开发板设置
NUC970系列芯片支持多种启动模式: SPI启动、Nand Flash启动、eMMC启动、USB ISP模式。启动模式可以通过PA[1:0]来设置。另外,管脚复用可通过跳线根据系统需求来设置,具体可以参考开发板使用文件来做相应的设置。

2 BSP安装2.1 系统需求
建立linux开发环境,需要有安装linux环境,可以安装在pc上或安装在虚拟机上。
具体请参考BSP使用手册。
2.2 BSP相关库
Patch 用来打补丁的工具
Libc6-dev 交叉编译所需的动态连接的32位函数库(i386版本)
Libncurses5-dev 设置内核接口所需使用的动态连接库
Minicom 或cutecom 串口工具用来显示以及控制uboot及内核
2.3 BSP安装步骤
Linux BSP包含了三个目录,各目录下的内容如下:
l /BSP:一个压缩包,包含了U-Boot,Linux内核、范例程序的源码、交叉编译工具、以及根文件系统。
l /Documents:BSP相关说明文件
l /Tools:Windows上的烧写工具及驱动程序
将BSP目录中的压缩包复制到Linux开发机器上,使用下面的命令解压缩:
#tar zxvf nuc970bsp.tar.gz
#cd nuc970bsp
在此目录中有安装脚本install.sh。此脚本需要管理者权限才可以执行,可以选择使用“su”命令切换到管理者来执行。
#su
#./install.sh
或是使用sudo来执行安装脚本(若是安装的Linux没有开放root权限,例如Ubuntu,则可以使用本方式来安装BSP)
# sudo ./install.sh
以下是整个安装过程:
若是使用的Linux开发环境之前已经安装过新唐提供的交叉编译工具,安装脚本会询问是否要重新安装交叉编译工具,否则脚本并不会询问使用者,而是直接在/usr/local/arm_linux_4.3目录安装编译工具。在第一种情况下,若要重新安装可输入Y(或者是yes、y、YES),然后按Enter键。
完成交叉编译工具后,安装脚本会询问安装Linux内核、U-Boot、以及范例程序的绝对路径。安装完成后的bsp目录内容如下:
l applications:范例程序及开源程序
l image/kernel:使用默认设置编译好的内核
l image/U-Boot:使用默认设置预先编好的支持NAND或SPI Flash的U-Boot执行文件及环境变量env.txt文件。其中U-Boot的默认执行地址均为0xE00000。
l linux-3.10.x:内核源代码
l rootfs:根文件系统
l uboot:U-Boot源码
安装脚本会尝试为安装的目录设置正确权限,并将交叉编译器的路径增加到系统搜索路径($PATH)中。但在有些Linux版本中,可能发生无**确设置的问题。此时需要麻烦用户手动设置正确的权限且将/usr/local/arm_linux_4.3/usr/bin加到$PATH中。
请注意,在安装完成后,用户需要先登出再登入,$PATH的设定才会生效。

3 Linux内核配置3.1 内核设置界面
Linux内核支持各种不同设置,可将不需要的功能移除,只保留需要的功能,减少内核消耗的资源。
要进入内核设置界面,请在linux-3.10.x目录下输入“make menuconfig”的命令,即可进入内核设置界面。
内核设置菜单是多层次的。在当前页面内,可通过上、下、左、右四个方向键选择菜单的位置。上下键选择要控制的内核功能,左右键则是用来选择最下排的功能按钮。按“Enter”键进入下层菜单。最下排按钮共有5个,依次为Select、Exit、Help、Save、Load,具体功能如下:
l Select:当停留在该键时,用空格键选择内核功能。[ ]表示该功能禁止,不编进内核,该功能选中编进内核,[M]表示编译成模块,需手动加载。
l Exit:返回上一菜单,若为最上层菜单则提示是否要保存并退出。
l Help:选择显示帮助
l Save:保存当前设置
l Load:载入已保存设置
在设置完成后,内核设置会保存到linux-3.10.x目录下的.config文件中。
3.2 默认设置
新唐为NUC970系列芯片提供了默认设置,建议用户在更改内核设置前,先加载默认设置,再进行更改。加载默认设置的命令如下:
#make _defconfig
其中:可设为:nuc972,nuc973,nuc976,nuc977
例如:#make nuc972_defconfig //加载NUC972的默认设置。
有时因内核设置错误造成无法开机时,可通过默认设置来恢复到可开机状态。
3.3 LINUX内核设置
本节根据不同的驱动或功能,介绍所需要使能的内核设置。
3.3.1 基本系统设置
l 使能模块加载功能
有些驱动程序只支持动态加载,例如USB WiFi驱动程序、USB device的驱动等。使能模块加载功能支持,系统启动后可通过insmod命令来加载驱动模块。
l 模块卸载功能
使能模块加载功能支持后,若系统需要支持动态卸载功能,则需要按下图设置模块卸载功能支持。这样就可以使用rmmod来卸载模块了。
l 启动命令设置
用来设置系统启动参数,如根文件系统类型、内存大小、console波特率等。以下只是一个简单的设置,详细说明请参考Documentation/kernel-parameters.txt。
3.3.2 网络功能设置
l TCP/IP设置
使能网络功能设置如下:
l WiFi无线网络设置
若要使用无线网络设备,除了要设置上面的TCP/IP外,还需要设置下面的选项。

使用特权

评论回复
12
dongnanxibei| | 2018-1-26 16:16 | 只看该作者
3.3.3 驱动配置
l Audio音频接口配置
I2S接口的配置如下:
I2S支持主模式或从模式,用户可根据需要选择两者之一。
选定I2S后,将同时选中NAU8822 codec驱动。另外,配置codec驱动时必须配置I2C接口驱动,系统才能正确加载NAU8822设备。
如果audio应用程序是使用旧的OSS架构编写的,需要配置下面两项,使ALSA兼容OSS架构。可参口音频演示程序alsa_audio。(源代码位于BSP/applications/demos/alsa_audio目录下)
l Cryptographic Accelerator配置
要支持Cryptographic Accelerator,前先配置Networking support里的PF_KEY socket。
然后再打开Cryptographic API里面的相关设定
NUC970 Cryptographic Accelerator硬件支持AES、DES及3-DES crypto加密算法,以及支持SHA及HMAC hash算法,可参考Demo程序crypto。(代码位于BSP/applications/demos/crypto目录下)
l DMA配置
NUC970系列芯片支持DMA功能。要在内核中使能DMA,需进入“DMA Engine support”菜单,配置“NUC970 DMA support”。
如果需要在内核中使用DMA,请参照linux-3.10.x/drivers/dma/dmatest.c中的使用方法,如果需要实际了解dmatest.c的运作流程,可开启“DMA Test Client”。DMA test client将会被自行带起来。
l Ethernet网口配置
NUC970系列支持两个网口,可分别开启或同时开启。要支持网口除了网口驱动外,PHY驱动也需要配置。NUC970开发板上使用的是ICPlus的PHY,若是使用其它的PHY,请配置相应的PHY驱动。
l Etimer配置
NUC970内核执行时,使用基本时钟来计时。另外还提供了四通道的加强型时钟,可输入50%占空比的输出或是支持捕获功能。四个通道可独立控制,以下是相关的配置界面,不使用的可配置成“No output”或“No input”。下图是把通道0和1配置成分别使用PC.6、PC.8输出,通道2和通道3配置成使用PC.11和PC.13作为捕获管脚的例子。
应用程序可使用ioctrl()来控制Etimer的功能,目前支持了toggle out、trigger counting mode及free counting mode等三个功能。在捕获模式下(trigger counting mode及free counting mode),所捕获到的值可由read()读回(单位是us),代表了两次触发条件的间隔。不论是toggle out或是捕获模式单位均为us。可参考BSP中的demo程序(源码位于BSP/applications/demos/etimer)来开发所需要的功能。
l GPIO配置
NUC970系列芯片支持GPIO控制接口,要让内核支持GPIO控制,需配置“NUC970 GPIO support”及“/sys/class/gpio/…”。
GPIO驱动程序将NUC970系列芯片的GPIO口从GPIOA~GPIOJ每组都保留32个号码,所以GPIOA编号0x000~0x01F,GPIOB编号0x020~0x03F,GPIOC编号0x040~0x05F,GPIOD编号0x060~0x07F,GPIOE编号0x080~0x09F,GPIOF编号0x0A0~0x0BF,GPIOG编号0x0C0~0x0DF,GPIOH编号0x0E0~0x0FF,GPIOI编号0x100~0x11F,GPIOJ编号0x120~0x13F。
用户可通过sysfs接口来控制各GPIO。“/sys/class/gpio/…”是通用的GPIO控制接口,可以通过下面的方法来控制GPIO:
l /sys/class/gpio/export:打开某个GPIO
l /sys/class/gpio/unexport:关闭某个GPIO
l /sys/class/gpio/gpio0/direction:控制GPIOA00的方向in或out
l /sys/class/gpio/gpio0/value:控制GPIOA00的输出值1或0
下面是设定GPIOA0输出High的例子:
也可以参考demo程序gpio_demo(源码位于BSP/applications/demos/gpio目录)
在其他的驱动程序中可以通过下列步骤来控制GPIO:
l 在驱动程序中加入#include
l 依据archarmmach-nuc970includemachgpio.h决定使用哪个GPIO
l 以NUC970_PC7为例,具体控制如下:
设定输入模式:gpio_direction_input(NUC970_PC7)
设定输出模式和输出值:gpio_direction_output(NUC970_PC7,1)
设定输出high:gpio_set_value(NUC970_PC7,1)
设定输出low:gpio_set_value(NUC970_PC7,0)
取值:gpio_get_value(NUC970_PC7)
确认GPIO是否正在使用:gpio_request(NUC970_PC7,”NUC970_PC7”)
获取GPIO中断号码:gpio_to_irq(NUC970_PC7)
使用GPIO中断的例子:
l 配置GPIO模拟I2C接口
除了使用硬件I2C,还可使用GPIO来模拟实现I2C,通过修改arch/arm/mach-nuc970/dev.c中i2c_gpio_adpater_data结构来选择使用的管脚。如设定
.sda_pin=NUC970_PG1,
.scl_pin = NUC970_PG0
即时是使用PG0为SCL,使用PG1为SDA。
l I2C接口配置
I2C接口配置如下:
I2C Port 1有多组管脚供选择,如Port-B、Port-G、Port-H或者Port-I
选择硬件I2C,系统将使用NUC970内建的I2C控制器进行I2C的控制
I2C port0 上挂载了5个设备,分别是OV7725、OV5640、NT99050、NT99141及NAU8822,用户可自行修改、新增设备或将设备修改至port1上,只要修改文件arch/arm/mach-nuc970/dev.c中的nuc970_i2c_clients0结构。

clip_image080_thumb-1.jpg (35.36 KB )

clip_image080_thumb-1.jpg

clip_image078_thumb-1.jpg (90.08 KB )

clip_image078_thumb-1.jpg

clip_image076_thumb-1.jpg (82.74 KB )

clip_image076_thumb-1.jpg

clip_image074_thumb-1.jpg (8.77 KB )

clip_image074_thumb-1.jpg

clip_image072_thumb-1.jpg (40.15 KB )

clip_image072_thumb-1.jpg

clip_image070_thumb-1.jpg (33.07 KB )

clip_image070_thumb-1.jpg

clip_image068_thumb-1.jpg (9.57 KB )

clip_image068_thumb-1.jpg

clip_image066_thumb-1.jpg (25.6 KB )

clip_image066_thumb-1.jpg

clip_image064_thumb-1.jpg (50.53 KB )

clip_image064_thumb-1.jpg

clip_image062_thumb-1.jpg (40.95 KB )

clip_image062_thumb-1.jpg

clip_image060_thumb-1.jpg (65.6 KB )

clip_image060_thumb-1.jpg

clip_image058_thumb.jpg (8.17 KB )

clip_image058_thumb.jpg

clip_image056_thumb.jpg (13.58 KB )

clip_image056_thumb.jpg

clip_image054_thumb.jpg (38.89 KB )

clip_image054_thumb.jpg

clip_image052_thumb-1.jpg (48.43 KB )

clip_image052_thumb-1.jpg

clip_image050_thumb-1.jpg (63.31 KB )

clip_image050_thumb-1.jpg

clip_image048_thumb-1.jpg (89.63 KB )

clip_image048_thumb-1.jpg

clip_image046_thumb-2.jpg (28.17 KB )

clip_image046_thumb-2.jpg

clip_image044_thumb-2.jpg (57.04 KB )

clip_image044_thumb-2.jpg

使用特权

评论回复
13
dongnanxibei| | 2018-1-26 16:17 | 只看该作者
l LCD接口配置
要支持LCD屏,需配置内核下列选项:
在开发板上已接有800×480 的5寸LCD屏,使用18bit的数据线与屏连接,颜色数为RGB888(24-bit)
如果要将Linux的企鹅**在屏上显示出来,则需配置下列选项:
这样开机时,就可在屏上看到Linux的企鹅**。
可参考demo程序lcm,了解如可操作frame buffer。(源码位于BSP/applications/demos/lcm目录)
l MTD NAND flash配置
NAND flash的驱动是挂载在MTD子系统之下的,配置如下。NAND flash接口有两组管脚可选:Port C、Port I,需根据硬件连接情况来选择。
驱动中的基本设置如果需要由U-boot环境参数传入就必须将“Command line partition table parsing”选上,否则就使用驱动程序里的默认配置,将MTD分为三个分区。上电进入shell后,分别是/dev/mtdblock0、/dev/mtdblock1及/dev/mtdblock2。第一块是放置U-Boot的空间,第二块放置内核文件,第三块是用来挂载YAFFS2或UBIFS文件系统的空间。若是配置有需要更改,例如增加或减少分区、修改分区大小,请直接编辑uboot/include/nuc970_evb.h或drivers/mtd/nand/nuc970_nand.c
l PWM配置
NUC970 BSP中的内核版本为3.10,但3.10的PWM驱动程序不支持用户程序通过sysfs接口控制PWM,所以目前的PWM子系统是另外由3.11移植回3.10的,方便用户程序控制PWM。
要支持PWM,请配置下面的选项,使用的管脚可根据硬件修改,不使用的通道配置成“No output”即可。
要通过sysfs控制PWM,首先在系统开机后,进入/sys/class/pwm/,可看到四个PWM(pwmchip0~3),每组代表着一个PWM通道。要使用前,需要进入要控制的通道目录执行echo 0 >export,此时会生成一个pwm0目录,这样就可以开始控制这个通道了。在新生成的目录中有几个文件可用来控制PWM,下面列出来这些文件:
l period:控制周期,单位ns。目前驱动支持最小单位是us,以打出20us周期波为例:echo 20000>period
l duty_cycle:设置占空比。单位ns。打出15us
l polarity:设置输出相位。Set Active high:echo 1 > polarity或Set Active low:echo 0 > polarity
l enable:使能禁止控制。使能:echo 1 > enable;禁止:echo 0 > enable。
下面就是一个开启PWM0,并输出周期为30us,占空比为33%的例子:
l Ralink RT3070 802.11 WiFi支持
要支持RT3070 USB WiFi功能的话,除了使能无线网络功能、USB host驱动、模块加载支持外,还要开启下面的设置:
并且在boot command加上以下命令:
RT3070的驱动并没有放在内核源码之中,而是单独放在
BSP/applications/DPO_RT3070_LinuxSTA_V2.3.0.2_20100412/ 目录下。所以编译产生的是内核模块,需要动态加载。
编译时先修改目录下的Makefile,设定正确的内核源码路径,而后输入make命令进行编译。
编译完成后,产生驱动模块rt3070sta.ko。本驱动使用时,除了将本驱动模块放到文件系统中外,还要将RT2870STA.dat复制到根文件系统的etc/Wireless/RT2870STA/ 目录下。
该驱动的使用说明:
1) 加载驱动模块:insmod rt3070sta.ko
2) 启动无线网口:ifconfig ra0 up
3) 使用BSP中的wireless_tool.29版本连接到无线网
使用WEP方式连接的命令:
使用WPAPSK方式连接的命令:
使用WPA2PSK方式连接的命令:
4) 连线成功后,设置固定IP或使用DHCP获取动态IP。DHCP的命令如下:

使用特权

评论回复
14
dongnanxibei| | 2018-1-26 16:18 | 只看该作者
l RS232、RS485、IrDA串口配置
NUC970系列带有11个串口,可以分别独立配置,请按下面的说明来使能串口功能。每个串口可以单独的开关。除UART0、UART3、UART5外,其他串口都有多组管脚可选择,需要一起设置。其中,UART0这组串口是保留给console使用的,不需要在这里配置。
若是把串口作为红外控制使用,除了需要使能串口功能外,还需要按照下面配置红外模块的驱动选项:
l SD卡配置
NUC970支持两个SD卡接口,目前的驱动只能选择使用其中之一,不能同时使用两个SD。若选择使用SD1,需要配置使用的管脚,可选择Port E、Port H或Port I。
系统启动后,若是检测到有卡插入,会在/dev下出现一个mmcblk0的设备。若卡上有分区,会依分区方式另外出现mmcblk0、mmcblk1等设备。
l SPI接口配置
NUC970系列芯片支持两个SPI接口,可以单独使能或同时使能,下面是同时使能两个SPI接口的配置:
SPI port 0 管脚可选择Normal(4PIN)或Quad(6PIN)模式。
SPI port 1则可选择Port B/Port I(Normal mode)或者Port B/Port I(Quad mode)。
如要使用SPI flash,需要开启MTD功能,配置如下选项:
另外,还要配置JFFS2文件系统后,才能正确使用SPI Flash设备。
JFFS2文件系统的设置方式请参考文件系统配置的章节。
Linux内核需正确识别SPI flash后,才能对其读写。要让内核识别新的SPI flash,请
修改/新增driver/mtd/devices/m25p80.c中的m25p_ids结构。
以及 arch/arm/mach-nuc970/dev.c中的nuc970_spi_flash_data结构。
其中 .type字段需与m25p_ids结构中的其中一个字段相同,否则无法匹配到正确的设备。
如想修改SPI Flash partition数,则可修改 arch/arm/mach-nuc970/dev.c中的nuc970_spi_flash_partitions结构。

使用特权

评论回复
15
dongnanxibei| | 2018-1-26 16:19 | 只看该作者
l USB Host配置
要支持USB Host,请先勾选打开USB Host支持,NUC970 USB Host包含EHCI(USB 2.0)及OHCI(USB 1.1)两个USB Host控制器,必须同时打开,具体如下面所示:
其中在“NUC970 EHCI(USB 2.0)support”下,根据所使用的芯片型号,选择USB Host port power pin。可选择USB Host port0及port1 分别由PE.14及PE.15控制,或是选择统一由PF.10控制。除了NUC970的USB host驱动需要设置,另外还需要选择所要支持的设备类别,例如Mass Storage,若是要选择Mass Storage,则需先开启SCSI设备支持,才会出现Mass Storage的选项。
l USB Host与HID设备
如想使用USB HID(如USB mouse、keyboard)等设备,除了需要使能USB host外,还需要开启HID及input功能,请参考如下配置:
l 配置USB Device
编译完内核后,会产生三个module文件 fs/configfs/configfs.ko、drivers/usb/gadget/libcomposite.ko、driver/usb/gadget/g_mass_storage.ko,需要将这三个文件复制到rootfs或使系统可以存取到的地方。
USB Mass Storage Gaget的使用方法如下(以mmcblk0p1设备为例):
l VCAP图片获取接口配置
NUC970系列芯片支持Video捕获接口,要在内核中使能此功能,首先必须开启“cameras/video grabbers support”,然后进入“Encoders,decoders, sensors and other helper chips”选项中,开启“NUC970 Video-in support”并且选择摄影机的型号,目前支持OV7725、OV5640、NT99050及NT99141。
Video-Capture接口需要使用I2C接口来控制摄像头,所以在开启Video-Capture接口之前必须设定先开启I2C接口,I2C的部分请参考I2C章节。
目前Video-Capture驱动支持V4l2 API,范例部分请参考范例程序中的cap_demo。(BSP/applications/demos/cap目录)
l Watchdog Timer看门狗设置
要支持看门狗,请参考下面的设置。目前缺省的超时为2.03秒。用户程序可通过ioctl()下的WDIOC_SETTIMEOUT命令更改超时时间。驱动中支持三个不同周期,输入小于2的话,是0.53秒。介于2~8之间的话是2.03秒,而超过8的话是设置成8秒。可参考wdt的演示程序。(BSP/applications/demos/wdt目录)
l Window Watchdog Timer 窗口看门狗配置
要支持窗口看门狗,请参考以下设置。
NUC970窗口看门狗与看门狗主要有两个差异:第一,设置使能之后,无法更改设置,无法停止;第二,只能在特定的时间内让窗口看门狗复位,而不是如同看门狗只要还没有超时,随时可复位。所以应用程序在使用时,一定要先使用ioctl()的WDIOC_GETTIMELEFT命令获取可复位的时间,只有等返回时间为0时才可使用WDIOC_KEEPALIVE命令窗口看门狗复位,否则在不正确的时间下达WDIOC_KEEPALIVE命令,会马上造成系统复位。可参考wwdt演示程序。(BSP/applications/demos/wwdt目录)
l Keypad配置
如果要使用开发板上的keypad,则需选择“Keypad pins are 4×2 matrix PH pin”,可搭配keypad范例程序(BSP/applications/demos/keypad)来使用。
l RTC配置
l ADC电池配置
NUC970系列芯片支持ADC Battery接口,需开启Power supply class support中的“NUC970 ADC battery driver”。如下图:
在shell模式下可以进入“sys/class/power_supply”中找到NUC970 Bettery(ADC)进入后即可查看目前的状态,如下所示:
电池电压:cat voltage_now
电池百分比:cat present
l ADC keypad/touch screen配置
NUC970系列芯片支持ADC keypad/touchscreen接口,必须进入“Input device support”中,然后开启进入“Input NUC970 ADC”,即可看见“Keypad support”和“Touchscreen support”,选择需要的功能开启即可。
当使用keypad时,可以通过修改drivers/input/nuvoton/nuc970adc.c中的nuc970_keycode来修改按键上报值及nuc970_key_th来设定ADC的门限值,假设把ADC得到的电压需要分成八个key则nuc970_keycode[0]设定第一个key上报的key值和nuc970_key_th[0]设定第一个key相对应ADC的电压范围;nuc970_keycode[1]设定第二个key上报的key值和nuc970_key_th[1]设定第二个key相对应ADC的电压范围,依次类推如下:
l SCUART智能卡串口模式配置
NUC970系列带有2个智能卡接口,这两个接口除了智能卡功能外,也可当成基本串口来使用。当系统自带的串口不够用时,可以用来扩充出两个串口。在智能卡串口模式下,SC_CLK作发送,而SC_DAT作接收。这两个接口可以分别使能,请根据下面的说明来使能串口功能,每个串口可以单独的开关,其中SCUART0有两组管脚供选择,使能时需要同时选择管脚。
在智能卡串口模式下,设备文件是 /dev/ttySCU0或/dev/ttySCU1。基本操作与普通串口相同,但限制比普通串口多,如发送及接收各只有四级FIFO,不支持流量控制,也不支持RS485、IrDA等传输模式。当系统串口足够用时,请优先考虑使用普通串口。
l Loop back设备设置
Loop back设备可让系统读写一个文件就像读写block设备一样,这个文件可以是任何系统可以读写的文件系统,然后加载到指定的loop back设备上即可使用。使能设置方式如下:
使用方法如下:
1、生成文件
2、格式化文件(以FAT文件系统为例)
3、加载文件
3.3.4 文件系统配置
l FAT文件系统配置
FAT是SD卡以及U盘上常见的文件格式。FAT文件系统需配置下面选项
以SD卡的第一分区为例,加载文件系统的命令是:
l JFFS2文件系统配置
JFFS2是NAND flash上使用的文件系统之一,要支持jffs2文件系统请配置下面的选项。
l ROMFS文件系统配置
ROMFS文件系统是根文件系统使用的格式之一,请配置下面的选项来支持ROMFS文件系统:
l YAFFS2文件系统配置
YAFFS2是NAND flash上使用的文件系统之一,使用YAFFS2需要先使能MTD的“Caching block device access to MTD devices Device drivers”。YAFFS2的配置如下:
加载YAFFS2文件系统的命令如下:
l exFAT文件系统配置
exFat是微软开发出来的新一代文件系统,exFAT修改了FAT在单个文件大小及设备容量上的限制问题。exFAT的配置如下:
以SD卡的第一分区为例,加载exFAT文件系统的命令如下:
l FUSE文件系统配置及NTFS文件系统支持
FUSE(Filesystem in Userspace), 是指完全在用户层实现的文件系统。用户可以通过FUSE系统实现各种自定的文件系统,较常见的使用FUSE来实现的用户文件系统有NTFS-3G、SSHFS等。下面介绍如何通过FUSE来实现微软的NTFS系统(NTFS-3G)。
可以按照下面的配置来使能FUSE文件系统:
NTFS-3G是一个由Tuxera公司开发并维护的开源项目,目的是为Linux提供NTFS分区的驱动程序,能够安全快速的对Windows NT(包括Windows 2000、Windows XP、Windows Server 2003和Windows Vista)的文件系统进行读写。目前NTFS-3G最新版本是Tuxera公司于2014年2月23日发布的ntfs-3g_ntfsprogs-2014.2.15。
下载完后,根据ntfs-3g上的使用手册进行编译,完成后使用下面的命令即可使用。
l UBIFS文件系统配置
UBIFS是用于固态硬盘设备上的文件系统,与LogFS相互竞争,作为JFFS2的后续文件系统之一,UBIFS在设计效率上比YAFFS2、JFFS2更适合MLC NAND Flash。如:UBIFS支持write-back,它写入的资料会被cache,直到有必要写入时才写到flash,大大地降低分散小区块数量并提高I/O效率。
3.3.5 使用FIQ
一般的中断在某些时候可能会被系统锁住,进而影响此中断的实时性。这是,就可以使用本章节内所提的FIQ,来确保中断的实时性。
l 内核配置
l 使用方法举例
初始化流程如下(以timer2为例):
其中,regs.ARM_r8必须为fiq handler的地址及regs.ARM_r10必须为REG_AIC_IPER的位置。另外需要再对timer2进行必要配置即可使用FIQ。

使用特权

评论回复
16
dongnanxibei| | 2018-1-26 16:20 | 只看该作者
3.3.6 Touch Screen与tslib设置
当使用touch screen时,可以通过tslib 1.1来校正touch screen。
在applications.tar.gz解压缩后,进入tslib-1.1目录执行下列步骤:
1.编译tslib-1.1
#./configure –prefix=$(pwd)/install –enable-static –enable-shared –host= arm-linux
#make
#make install
2.将$(pwd)/install中所有文件复制到$(rootfs)目录下
3.修改$(rootfs)/etc/profile并增加下列几行。
4.修改$(rootfs)/etc/ts.conf
5. 执行ts_calibrate校准程序,根据屏的指示点击屏幕,对触摸屏进行校准。完成校准后,执行ts_test测试程序,即可去测试触摸屏。如果测试触摸效果不好(无法点选特定的地方或画线有很大的偏差),建议再执行一次校正程序。
6. 执行ts_test,得到如下图显示:
# ts_test
3.4 LINUX内核编译
内核设置完成后,在linux-3.10.x目录下执行“make”命令,即可编译内核。若编译通过,则产生内核镜像文件及使用zip压缩的内核镜像文件,它们会被放到源码的上一层的image目录中。

4 Linux用户程序4.1 演示程序
NUC970 BSP在applications中提供了一些演示程序,下面介绍这些演示程序及其内容。
1.alsa-utils-1.0.23: ALSA命令工具
l 交叉编译命令如下:
$./configure –host=arm-linux –disable-nls –disable-nls –disable-xmlto CPPFLAGS= -I/usr/local/arm_linux_4.3/usr/include/ncurses LDFLAGS= -L/usr/local/arm_linux_4.3/usr/lib
l 播放混音设定
$./amixer set PCM 85%
$./amixer set Headphone 90%
l 录音混音设定
MIC录音设置
$./amixer set “Mic Bias” on
$./amixer set “Input PGA” 100%
$./amixer set ADC 90%
Line In录音
$./amixer set “Right Input Mixer R2” on
$./amixer set “Left Input Mixer L2” on
$./amixer set “L2/R2 Boost” 100%
$./amixer set ADC 90%
l 播放的命令
$./aplay
如要播放BSP内的音乐示例文件,命令如下:
$cd usr
$./aplay -c 2 -f S16_LE alsa/8k2ch.pcm
l 录音的命令:
$./arecord -d 10 -f S16_LE -c2 -r8000 -t wav -D plughw:0,0
l 同时录放的命令
$./arecord -f S16_LE -r 8000 -c 2 -D plughw:0,0 | ./aplay
2. Benchmark/netperf-2.6.0 网络性能测试工具
交叉编译命令:$./configure -host=arm-linux
3. Busybox-1.22.1/ busybox源码
交叉编译命令:
$ make menuconfig
Select applets to be build
$ make
4. demos程序
demos/alsa_audio 音乐示例程序
demos/cap 图像获取示例程序
demos/crypto 加密解密示例程序
demos/etimer 增强型定时器示例程序
demos/gpio GPIO示例程序
demos/irda 红外演示程序
demos/lcm/ lcd演示程序
demos/thread 线程演示程序
demos/rtc RTC演示程序
demos/uart uart演示程序
demos/wdt 看门狗演示程序
demos/wwdt 窗口看门狗演示程序
5. DPO_RT3070_LinuxSTA_V2.3.0.2_20100412
RT3070无线dongle开源驱动程序
6. 工具软件
l wireless_tools.29 WiFi设定工具包,包含了iwconfig,iwlist,iwpriv等工具
l Tslib-1.1 touch screen库,含校正及测试程序
l yaffs2utils.tar.gz yaffs2工具 $make
l lzo-2.09.tar.gz 压缩/解压缩工具
交叉编译命令如下:
$cd lizo-2.09
$./configure –host = arm-linux –prefix = $PWD/../install
$make
$make install
l libuuid-1.0.3.tar.gz 产生唯一序号工具
交叉编译命令如下:
$cd libuuid-1.0.3
$./configure –host=arm-linux –prefix=$PWD/../install
$make
$make install
l mtd-utils.tar.gz mtd-utils源码
交叉编译命令如下:
需要使用到lzo-2.09.tar.gz套件和libuuid-1.0.3.tar.gz套件
$cd mtd-utils
$export CROSS=arm-linux-
$export WITHOUT_XATTR=1
$export DESTDR=$PWD/../install
$export LZOCPPFLAGS= -I/home/install/include
$export LZOLDFLAGS= – L/home/install/lib
$make
$make install
7. QT编译
qt-everywhere-opensource-src-4.8.5: QT gui 源码
如果有使用tslib来支持触摸屏,请先修改如下文件
mkspecs/qws/linux-nuc970-g++/qmake.conf
指定QMAKE_INCDIR及QMAKE_LIBDIR,如下:
QMAKE_INCDIR = path to /tslib-1.1/install/include
QMAKE_LIBDIR = path to /tslib-1.1/install/lib
l 设定环境变量
$ export MY_CC_QT4_PREFIX=/usr/local/Trolltech/QtEmbedded-4.8.5
l 配置
$./configure
-prefix ${MY_CC_QT4_PREFIX}
-release -opensource -static
-qconfig dist
-no-exceptions -no-accessibility -no-stl -no-qt3support
-no-xmlpatterns -no-multimedia -no-audio-backend -no-phonon
-no-phonon-backend
-no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools
-no-declarative -no-declarative-debug -qt-zlib -qt-freetype
-no-gif -qt-libpng -no-libmng -no-libtiff -qt-libjpeg
-no-openssl
-nomake tools -nomake demos -nomake examples -nomake docs -nomake translations
-no-nis -no-cups -no-iconv -no-pch -no-dbus
-embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-nuc970-g++
-no-gtkstyle -no-nas-sound -no-opengl -no-openvg -no-sm -no-xshape
-no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes
-no-xrandr -no-xrender -no-mitshm -no-fontconfig
-no-xinput -no-xkb -no-glib -qt-gfx-linuxfb -qt-mouse-tslib
-qt-kbd-linuxinput
l 编译QT:
$make
l 编译QT程序
$ cd /path/to/qt-everywhere-opensource-src-4.8.5/examples/dialogs/trivialwizard
$ ../../../bin/qmake
$ make
l 运行QT程序
复制trivialwizard 到系统可以存取到的地方。
设定tslib环境参数
$ export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
执行
$trivialwizard -qws

使用特权

评论回复
17
dongnanxibei| | 2018-1-26 16:20 | 只看该作者
4.2 交叉编译
有时在一些项目中需要移植软件到ARM平台,许多开源软件都已支持交叉编译,此时只要根据那些软件的说明文档进行交叉编译即可。
但有时遇到那些不支持交叉编译的软件时,就需要手动来更改Makefile。一般来说更改过后的Makefie与原始版本相近,只须做小幅更改就可支持交叉编译。下面列出了需要修改的部分。
l 编译工具的前缀字。如原本的Makefile设定gcc为编译工具,则在新的Makefile需要改成交叉编译工具arm-linux-gcc。其他如as、ld等工具也须更改为arm-linux-as及arm-linux-ld。
l 库文件及头文件所在的路径需作相应修改。交叉编译不使用x86系统下的glibc。而是使用工具链中所提供的占用系统资源比较少的uClibc。
下面列出了一个简单的交叉编译Makefile供参考:

使用特权

评论回复
18
zx5290| | 2018-1-30 15:06 | 只看该作者
看下,很想用

使用特权

评论回复
19
huangcunxiake| | 2018-1-30 19:33 | 只看该作者
970的资料很难搞到啊,看看都有什么。

使用特权

评论回复
20
DboyLQ| | 2018-1-31 09:41 | 只看该作者
谢谢分享,正需要!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1893

主题

15621

帖子

197

粉丝