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外,还需要设置下面的选项。
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, 下载次数: 1)

clip_image078_thumb-1.jpg (90.08 KB, 下载次数: 0)

clip_image076_thumb-1.jpg (82.74 KB, 下载次数: 1)

clip_image074_thumb-1.jpg (8.77 KB, 下载次数: 1)

clip_image072_thumb-1.jpg (40.15 KB, 下载次数: 1)

clip_image070_thumb-1.jpg (33.07 KB, 下载次数: 0)

clip_image068_thumb-1.jpg (9.57 KB, 下载次数: 1)

clip_image066_thumb-1.jpg (25.6 KB, 下载次数: 0)

clip_image064_thumb-1.jpg (50.53 KB, 下载次数: 1)

clip_image062_thumb-1.jpg (40.95 KB, 下载次数: 0)

clip_image060_thumb-1.jpg (65.6 KB, 下载次数: 1)

clip_image058_thumb.jpg (8.17 KB, 下载次数: 2)

clip_image056_thumb.jpg (13.58 KB, 下载次数: 2)

clip_image054_thumb.jpg (38.89 KB, 下载次数: 1)

clip_image052_thumb-1.jpg (48.43 KB, 下载次数: 0)

clip_image050_thumb-1.jpg (63.31 KB, 下载次数: 1)

clip_image048_thumb-1.jpg (89.63 KB, 下载次数: 1)

clip_image046_thumb-2.jpg (28.17 KB, 下载次数: 1)

clip_image044_thumb-2.jpg (57.04 KB, 下载次数: 0)

l LCD接口配置
要支持LCD屏,需配置内核下列选项:
在开发板上已接有800×480 的5寸LCD屏,使用18bit的数据线与屏连接,颜色数为RGB888(24-bit)
如果要将Linux的企鹅logo在屏上显示出来,则需配置下列选项:
这样开机时,就可在屏上看到Linux的企鹅logo。
可参考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的命令如下:
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结构。

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。

下载地址:http://www.tuxera.com/community/ntfs-3g-download/。

下载完后,根据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。

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

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供参考:

原文来自:https://bbs.21ic.com/icview-2408450-1-1.html

NUC970BSP Linux 3.10.x配置相关相关推荐

  1. 想学linux需要的电脑配置相关

    开始学linux了,加油!!! 我是跟着正点原子的视频学的,左神第一期讲--做linux开发需要的电脑配置 左神自己的配置以及他推荐的配置如下: CPU 性能越强越好,cpu的核越多越好 内存 推荐1 ...

  2. linux 网络设备,网卡配置 ,相关

    网络设备,网卡配置: Eth0是物理网卡:唯一mac地址,Bcast:广播地址,MAsk:子网掩码, Lo:系统自带的回环的ip地址,可以做一些基本的测试应用,比如没有网卡就用127.0.0.1,ro ...

  3. 服务器防火墙,linux下iptables防火墙配置相关

    iptables防火墙 iptables常用命令 iptables配置文件`/etc/sysconfig/iptables` iptables服务命令 -- 启动服务 -- 停止服务 -- 重启服务 ...

  4. Linux网络属性配置相关命令

    Linux网络属性配置相关命令: 前言: Linux属性配置可以分为两类.一类通过命令配置,另一类通过修改配置文件配置. Linux属性配置的相关命令可以分为三大类: 一.ifcfg命令家族:①ifc ...

  5. Linux基础命令-网络配置和相关命令

    Linux基础命令-网络配置和相关命令 网络配置和相关命令 一.基本网络配置 二.网卡名称 1. 网卡别名 2. 设备别名 3. 实验 三.网络配置方式 1. ifconfig命令 2. route命 ...

  6. linux环境下和网络服务相关的配置文件含义及如何配置

    要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置.那天查看服务器的eth0地址,后来想了一些问题,到家里就翻了翻以前的文档,无意中看到了这个 ...

  7. SAP PM 初级系列10 - 维护通知单相关的配置

    SAP PM 初级系列10 - 维护通知单相关的配置 1,定义维护通知单类型 2,定义维护通知单的编号范围 3,Allowed Change of Notification Type 这里定义哪种类型 ...

  8. Linux下DHCP服务的配置相关参数说明

    Linux下DHCP服务的配置相关参数说明 DHCP配置通常包括三部分:parameters.declarations.option. 1. parameters parameters用于说明DHCP ...

  9. Linux查询网络配置相关命令

    Linux查询网络配置相关命令 查看网络接口信息 ifconfig:查看系统所有网络接口相关信息 ifconfig -s:查看所占内存 查看及修改主机名 hostname:查看主机名称 hostnam ...

最新文章

  1. c语言程序中变量先引用声明,C语言如何跨文件调用函数定义中声明的变量
  2. [概统]本科二年级 概率论与数理统计 第八讲 大数定律与中心极限定理
  3. 【计网】计网----子网掩码,网关,ARP协议的作用
  4. Magento 1.9.2 Unknown cipher in list: TLSv1
  5. K8S_Google工作笔记0006---通过kubeadm方式_部署master节点
  6. ubuntu 18.04 卸载 mysql 过程记录
  7. 计算机单机管理软件,小财迷电脑收银系统(收银记账软件) 单机版
  8. oracle中between函数用法,Oracle常用函数使用介绍
  9. 如何彻底删除adobe?adobe官方清理工具怎么用?
  10. 单页面网站的优化方法大全
  11. Tensorflow.keras小案例Mnist数字识别
  12. 六十甲子亡命安葬山向宜忌
  13. 设计模式—策略模式(Strategy Pattern)
  14. 志愿者服务系统php,志愿者服务系统
  15. ImageView中动态设置图片
  16. 东北大学专业 计算机专业英语教材,东北大学非英语专业硕士生用的哪套英语教材。求赐教!...
  17. 自从上了K8S,项目更新都不带停机的!
  18. PTA-基础编程题目集-7-1 厘米换算英尺英寸
  19. 移动联通电信DTU 透传DTU 无线远距离传输
  20. PT927G光猫获取超管+删除tr069教程

热门文章

  1. 李开复给中国大学生的第七封信---21世纪最需要的七种人才
  2. 发达国家和地区物流配送方式的比较与借鉴 (zt)
  3. 旺旺老师JavaSE基础第一章(05)Java优点与缺点
  4. 广西建工一建公文格式脚本
  5. 笔记-基于Lie群SE(3)的航天器姿轨一体化建模方法
  6. 计算机应用数学基础重庆大学,重庆大学应用物理学专业介绍
  7. python如何将字符串里有数字和文字怎么提取数字
  8. 循环链表构建及解决约瑟夫环、逢七过、链表逆置问题
  9. 第7章第24节:完成漂亮的甜甜圈图表的制作 [SwiftUI快速入门到实战]
  10. jetpack之datastore