1 开发环境介绍


开发环境连线


nuc10如何进入bios nuc10 bios介绍_linux


开发板设置


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


以下是整个安装过程:


nuc10如何进入bios nuc10 bios介绍_linux_02


若是使用的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命令来加载驱动模块。


nuc10如何进入bios nuc10 bios介绍_加载_03


l 模块卸载功能


使能模块加载功能支持后,若系统需要支持动态卸载功能,则需要按下图设置模块卸载功能支持。这样就可以使用rmmod来卸载模块了。


nuc10如何进入bios nuc10 bios介绍_linux_04


l 启动命令设置


用来设置系统启动参数,如根文件系统类型、内存大小、console波特率等。以下只是一个简单的设置,详细说明请参考Documentation/kernel-parameters.txt。


nuc10如何进入bios nuc10 bios介绍_加载_05


3.3.2 网络功能设置


l TCP/IP设置


使能网络功能设置如下:


nuc10如何进入bios nuc10 bios介绍_加载_06


l WiFi无线网络设置


若要使用无线网络设备,除了要设置上面的TCP/IP外,还需要设置下面的选项。


nuc10如何进入bios nuc10 bios介绍_驱动程序_07


nuc10如何进入bios nuc10 bios介绍_linux_08


 


3.3.3 驱动配置


l Audio音频接口配置



I2S接口的配置如下:



nuc10如何进入bios nuc10 bios介绍_加载_09



I2S支持主模式或从模式,用户可根据需要选择两者之一。



选定I2S后,将同时选中NAU8822 codec驱动。另外,配置codec驱动时必须配置I2C接口驱动,系统才能正确加载NAU8822设备。



如果audio应用程序是使用旧的OSS架构编写的,需要配置下面两项,使ALSA兼容OSS架构。可参口音频演示程序alsa_audio。(源代码位于BSP/applications/demos/alsa_audio目录下)



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_10



l Cryptographic Accelerator配置



要支持Cryptographic Accelerator,前先配置Networking support里的PF_KEY socket。



nuc10如何进入bios nuc10 bios介绍_驱动程序_11



然后再打开Cryptographic API里面的相关设定



nuc10如何进入bios nuc10 bios介绍_驱动程序_12



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将会被自行带起来。



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_13



l Ethernet网口配置



NUC970系列支持两个网口,可分别开启或同时开启。要支持网口除了网口驱动外,PHY驱动也需要配置。NUC970开发板上使用的是ICPlus的PHY,若是使用其它的PHY,请配置相应的PHY驱动。



nuc10如何进入bios nuc10 bios介绍_加载_14



l Etimer配置



NUC970内核执行时,使用基本时钟来计时。另外还提供了四通道的加强型时钟,可输入50%占空比的输出或是支持捕获功能。四个通道可独立控制,以下是相关的配置界面,不使用的可配置成“No output”或“No input”。下图是把通道0和1配置成分别使用PC.6、PC.8输出,通道2和通道3配置成使用PC.11和PC.13作为捕获管脚的例子。



nuc10如何进入bios nuc10 bios介绍_驱动程序_15



应用程序可使用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/…”。



nuc10如何进入bios nuc10 bios介绍_加载_16



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的例子:



nuc10如何进入bios nuc10 bios介绍_linux_17



也可以参考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中断的例子:



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_18



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。



nuc10如何进入bios nuc10 bios介绍_加载_19



nuc10如何进入bios nuc10 bios介绍_驱动程序_20



l I2C接口配置



I2C接口配置如下:



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_21



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)

 



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_22



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

 



nuc10如何进入bios nuc10 bios介绍_linux_23



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

 



nuc10如何进入bios nuc10 bios介绍_linux_24



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

 



nuc10如何进入bios nuc10 bios介绍_驱动程序_25



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

 



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_26



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

 



nuc10如何进入bios nuc10 bios介绍_驱动程序_27



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

 



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_28



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

 



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_29



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

 



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_30



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

 



nuc10如何进入bios nuc10 bios介绍_驱动程序_31



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

 



nuc10如何进入bios nuc10 bios介绍_linux_32



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

 



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_33



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

 



nuc10如何进入bios nuc10 bios介绍_linux_34



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

 



nuc10如何进入bios nuc10 bios介绍_加载_35



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

 



nuc10如何进入bios nuc10 bios介绍_linux_36



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

 



nuc10如何进入bios nuc10 bios介绍_驱动程序_37



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

 



nuc10如何进入bios nuc10 bios介绍_驱动程序_38



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

 



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_39



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

 



nuc10如何进入bios nuc10 bios介绍_linux_40



 



 

 

 

 


l LCD接口配置



要支持LCD屏,需配置内核下列选项:



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_41



在开发板上已接有800×480 的5寸LCD屏,使用18bit的数据线与屏连接,颜色数为RGB888(24-bit)



如果要将Linux的企鹅logo在屏上显示出来,则需配置下列选项:



nuc10如何进入bios nuc10 bios介绍_加载_42



这样开机时,就可在屏上看到Linux的企鹅logo。



可参考demo程序lcm,了解如可操作frame buffer。(源码位于BSP/applications/demos/lcm目录)



l MTD NAND flash配置



NAND flash的驱动是挂载在MTD子系统之下的,配置如下。NAND flash接口有两组管脚可选:Port C、Port I,需根据硬件连接情况来选择。



nuc10如何进入bios nuc10 bios介绍_linux_43



驱动中的基本设置如果需要由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”即可。



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_44



要通过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%的例子:



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_45



nuc10如何进入bios nuc10 bios介绍_linux_46



l Ralink RT3070 802.11 WiFi支持



要支持RT3070 USB WiFi功能的话,除了使能无线网络功能、USB host驱动、模块加载支持外,还要开启下面的设置:



nuc10如何进入bios nuc10 bios介绍_linux_47



并且在boot command加上以下命令:



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_48



RT3070的驱动并没有放在内核源码之中,而是单独放在



BSP/applications/DPO_RT3070_LinuxSTA_V2.3.0.2_20100412/ 目录下。所以编译产生的是内核模块,需要动态加载。



编译时先修改目录下的Makefile,设定正确的内核源码路径,而后输入make命令进行编译。



nuc10如何进入bios nuc10 bios介绍_linux_49



nuc10如何进入bios nuc10 bios介绍_驱动程序_50



编译完成后,产生驱动模块rt3070sta.ko。本驱动使用时,除了将本驱动模块放到文件系统中外,还要将RT2870STA.dat复制到根文件系统的etc/Wireless/RT2870STA/ 目录下。



nuc10如何进入bios nuc10 bios介绍_加载_51



该驱动的使用说明:



1) 加载驱动模块:insmod rt3070sta.ko



2) 启动无线网口:ifconfig ra0 up



3) 使用BSP中的wireless_tool.29版本连接到无线网



使用WEP方式连接的命令:



nuc10如何进入bios nuc10 bios介绍_加载_52



使用WPAPSK方式连接的命令:



nuc10如何进入bios nuc10 bios介绍_linux_53



nuc10如何进入bios nuc10 bios介绍_linux_54



使用WPA2PSK方式连接的命令:



nuc10如何进入bios nuc10 bios介绍_加载_55



4) 连线成功后,设置固定IP或使用DHCP获取动态IP。DHCP的命令如下:



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_56



 



 



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并增加下列几行。

nuc10如何进入bios nuc10 bios介绍_加载_57

4.修改$(rootfs)/etc/ts.conf

nuc10如何进入bios nuc10 bios介绍_驱动程序_58

nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_59

5. 执行ts_calibrate校准程序,根据屏的指示点击屏幕,对触摸屏进行校准。完成校准后,执行ts_test测试程序,即可去测试触摸屏。如果测试触摸效果不好(无法点选特定的地方或画线有很大的偏差),建议再执行一次校正程序。

nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_60

nuc10如何进入bios nuc10 bios介绍_linux_61

6. 执行ts_test,得到如下图显示:

# ts_test

nuc10如何进入bios nuc10 bios介绍_linux_62

3.4 LINUX内核编译

内核设置完成后,在linux-3.10.x目录下执行“make”命令,即可编译内核。若编译通过,则产生内核镜像文件及使用zip压缩的内核镜像文件,它们会被放到源码的上一层的image目录中。

nuc10如何进入bios nuc10 bios介绍_加载_63


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

 

 

l RS232、RS485、IrDA串口配置


NUC970系列带有11个串口,可以分别独立配置,请按下面的说明来使能串口功能。每个串口可以单独的开关。除UART0、UART3、UART5外,其他串口都有多组管脚可选择,需要一起设置。其中,UART0这组串口是保留给console使用的,不需要在这里配置。


nuc10如何进入bios nuc10 bios介绍_驱动程序_64



nuc10如何进入bios nuc10 bios介绍_驱动程序_65



若是把串口作为红外控制使用,除了需要使能串口功能外,还需要按照下面配置红外模块的驱动选项:


nuc10如何进入bios nuc10 bios介绍_驱动程序_66



l SD卡配置


NUC970支持两个SD卡接口,目前的驱动只能选择使用其中之一,不能同时使用两个SD。若选择使用SD1,需要配置使用的管脚,可选择Port E、Port H或Port I。


nuc10如何进入bios nuc10 bios介绍_驱动程序_67



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_68



系统启动后,若是检测到有卡插入,会在/dev下出现一个mmcblk0的设备。若卡上有分区,会依分区方式另外出现mmcblk0、mmcblk1等设备。


l SPI接口配置


NUC970系列芯片支持两个SPI接口,可以单独使能或同时使能,下面是同时使能两个SPI接口的配置:


nuc10如何进入bios nuc10 bios介绍_加载_69



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功能,配置如下选项:


nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_70



另外,还要配置JFFS2文件系统后,才能正确使用SPI Flash设备。


JFFS2文件系统的设置方式请参考文件系统配置的章节。


Linux内核需正确识别SPI flash后,才能对其读写。要让内核识别新的SPI flash,请


修改/新增driver/mtd/devices/m25p80.c中的m25p_ids结构。


nuc10如何进入bios nuc10 bios介绍_加载_71



nuc10如何进入bios nuc10 bios介绍_nuc10如何进入bios_72



以及 arch/arm/mach-nuc970/dev.c中的nuc970_spi_flash_data结构。


其中 .type字段需与m25p_ids结构中的其中一个字段相同,否则无法匹配到正确的设备。


nuc10如何进入bios nuc10 bios介绍_加载_73



如想修改SPI Flash partition数,则可修改 arch/arm/mach-nuc970/dev.c中的nuc970_spi_flash_partitions结构。


nuc10如何进入bios nuc10 bios介绍_驱动程序_74



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


nuc10如何进入bios nuc10 bios介绍_linux_75


nuc10如何进入bios nuc10 bios介绍_加载_76