源码文件(source code)

评估板对应的Linux版本及对应的源码文件见下表:

The corresponding Linux version of the evaluation board and the corresponding source code files are shown in the table below:评估板型号

(evaluation board model)支持的系统版本

(system version supported)u-boot源码文件

(u-boot source code)linux源码文件

(linux source code)

MY-IMX28-EVKLinux-3.14.54u-boot-2015.04.tar.bz2linux-3.14.54.tar.bz2交叉编译工具文件(cross compiler tool file)

Linux程序交叉编译工具:gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.bz2

Linux program cross compiler tool:gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.bz2

Linux交叉编译工具配置文件:gcc-4.4.4-glibc-2.11.1-multilib-env

Linux cross compiler tool configuration file:gcc-4.4.4-glibc-2.11.1-multilib-env创建工作目录(creat working directory)

1)源码目录

source code directory

$ mkdir -p ~/my-imx28/02_source

jishu_1574671_1_1.html

2)工具目录

tool directory

$ mkdir -p ~/my-imx28/03_tools

jishu_1574671_1_1.html

3)镜像目录

image dirrectory

$ mkdir -p ~/my-imx28/04_image

jishu_1574671_1_1.html

4)应用程序目录

application directory

$ mkdir -p ~/my-imx28/01_application

jishu_1574671_1_1.html准备开发环境(prepare development environment)更新主机的源列表(update source list of host)

$ sudo apt-get update

jishu_1574671_1_1.html

更新完成后如下图所示:

it looks like below after the update

jishu_1574671_1_1.html安装aptitude包管理工具和ia32-libs(install management tool of aptitude package and ia32-libs)

提示:如果编译主机的Linux是32位的,可以跳过此步骤。

tips: if Linux of compilation host is 32bit,then you can skip this step安装aptitude包管理工具(install management tool of aptitude package)

$ sudo apt-get -y install aptitude

jishu_1574671_1_1.html

提示:上图为安装过aptitude后,再次执行安装命令的截图。

tips: the above image is the screenshots after re-execution of installation command when intallation of aptitude was completed.使用aptitude安装ia32-libs( install ia32-libs with aptitude)

$ sudo aptitude -y install ia32-libs

jishu_1574671_1_1.html

提示:上图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。

tips: the above image is the screenshots after re-execution of installation command when intallation of aptitude and ia32-libs was completed安装mkimage工具(install mkimage tool)

$ sudo apt-get -y install uboot-mkimage

提示:下图为安装过mkimage工具后,再次执行安装命令的截图。

tips: the following image is the screenshots after re-execution of installation command when intallation of mkimage was completed

jishu_1574671_1_1.html安装ncurses-dev(install ncurses-dev)

make menuconfig对其具有依赖性质

make menuconfig is dependant to it

$ sudo aptitude -y install ncurses-dev

jishu_1574671_1_1.html

提示:上图为安装过ncurses-dev工具后,再次执行安装命令的截图。

tips: the above image is the screenshots after re-execution of installation command when intallation of aptitude and ia32-libs was completed安装配置交叉编译工具链(install and configure cross compiler tool chain)安装Linux交叉编译工具链(install Linux cross compilation tool chain)

1)进入交叉编译工具链目录

enter cross compilation tool chain diretory

$ cd ~/my-imx28/03_tools/

2)复制Linux交叉编译工具到目录

copy Linux cross compilation tool to directory

将gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.bz2复制到“~/my-imx28/03_tools”,这一步自己采取相应的方式完成。

copy gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.bz2 to “~/my-imx28/03_tools”,this step need to be done in your own way。

3)解压Linux交叉编译工具

decompress Linux cross compilation tool

$ tar jxf gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.bz2

jishu_1574671_1_1.html

4)复制交叉编译工具配置文件

copy cross compilation tool configuration file

将gcc-4.4.4-glibc-2.11.1-multilib-env复制到“~/my-imx28/03_tools”,这一步自己采取相应的方式完成。

copy gcc-4.4.4-glibc-2.11.1-multilib-env to“~/my-imx28/03_tools”,this step need to be done in your own way

5)检查安装

check installation

$ source gcc-4.4.4-glibc-2.11.1-multilib-env

$ ${CROSS_COMPILE}gcc –v

jishu_1574671_1_1.htmlU-Boot编译(U-Boot compilation)准备编译(prepare compilation)复制源码包到开发主机中(copy source code package to development host)

将下载的“u-boot源码”复制到Linux开发主机的“~/my-imx28/02_source”。

copy“u-boot source code”downloaded to “~/my-imx6/02_source”of Linux development host

这一步自己采取相应的方式完成。

this step need to be done in your own way解压u-boot源码包(decompress u-boot source code package)

$ cd ~/my-imx28/02_source/

$ tar jxf u-boot-2015.04.tar.bz2

jishu_1574671_1_1.html更新库libssl-dev(update library libssl-dev)

$ sudo apt-get install libssl-dev

jishu_1574671_1_1.html编译(compile)使编译配置文件生效(validate compilation configuration file)

$ source ~/my-imx28/03_tools/gcc-4.4.4-glibc-2.11.1-multilib-env

jishu_1574671_1_1.html进入u-boot源码目录(validate compiler configuration file)

$ cd ~/my-imx28/02_source/u-boot-2015.04

jishu_1574671_1_1.html清除u-boot临时文件(remove u-boot temporary files)

$ make distclean

jishu_1574671_1_1.html配置u-boot(configure u-boot)评估板主型号

(evaluation board main model)CPU类型-内存容量

(CPU type-memory capacity)对应的u-boot配置

(corresponaind configuration of u-boot)

MY-IMX28-EVKMX283/7, 128Mmx28_evk_configMY-IMX28-EVK配置示例:

example for MY-IMX28-EVK configuration

$ make mx28_evk_config

jishu_1574671_1_1.html执行编译(execute compilation)

$ make u-boot.sb

提示:这里为了提高编译速度,在make后面加了“-j4”。这里编译的Linux主机是双核4线程的,所以“-j”后面用了4,也就是采用4线程编译。“-j”后面的数字可以根据系统资源分配,但是不应该超过编译主机最大支持的线程数。

Tips:To speed up the compilation,add "-j4" after make.The Linux host used to compile is dual-core ,4 threads .So "-j" is followed by 4, which takes 4 threads to compile. The number behind "-j" is allocated based on system resources,but It should not exceed the maximum threads the host support

jishu_1574671_1_1.html编译完成

complete compilation

提示:u-boot编译过程大概需要一、两分钟时间。

Tips: u-boot compiling process may take one or two minutes

jishu_1574671_1_1.html目标文件(target file)编译文件

compile file

编译完成后通过ls命令即可看到编译得到的文件 u-boot.sb

you can get the compiLED file u-boot .sb with ls command after compilation

$ ls

jishu_1574671_1_1.html目标文件

target file

MY-IMX28系列评估板的u-boot配置对应的目标文件名见下表:

The corresponding target file name for u-boot configuration of MY-IMX28 series evaluation board is shown in the table belowu-boot配置

(u-boot configuration)目标文件

(target file)

mx28_evk_configimx28_ivt_uboot.sb编译内核(compile kernel)准备编译(prepare compilation)复制源码包到开发主机中(copy source code package to development host)

将下载的“linux源码”复制到Linux开发主机的“~/my-imx28/02_source”。

copy“linux source code”downloaded to “~/my-imx28/02_source”of Linux development host

这一步自己采取相应的方式完成。

this step should be done in your own way解压linux源码包(decompress linux source code package)

$ cd ~/my-imx28/02_source/

$ tar jxf linux-3.14.54.tar.bz2

jishu_1574671_1_1.html内核编译配置(configuration of kernel compilation)使编译配置文件生效(validate configuration file of compilation)

$ source ~/my-imx28/03_tools/gcc-4.4.4-glibc-2.11.1-multilib-env

jishu_1574671_1_1.html清除内核临时文件(remove kernel temporary file)进入linux源码目录

enter linux source code directory

$ cd ~/my-imx28/02_source/linux-3.14.54

jishu_1574671_1_1.html清除临时文件

remove temporary file

$ make distclean

jishu_1574671_1_1.html内核配置(kernel configuration)

$ cp .mx28_config .config

jishu_1574671_1_1.html编译内核(compile kernel)执行编译

execute compilation

$ make zImage -j4

jishu_1574671_1_1.html编译完成

complete compilation

jishu_1574671_1_1.html目标文件

target file

arch/arm/boot/uImage即为编译得到的内核文件,使用ls命令可查看文件信息。

arch/arm/boot/uImage is the kernel file compiled,you can check file information with ls command

$ ls arch/arm/boot/uImage -la

jishu_1574671_1_1.html编译设备树 (compife device tree)

评估板型号规格与设备树文件对应关系见下表:

The correspondence between the type of evaluation board and device tree is shown below:功能

(function)源码位置

(source code position)Linux 设备和文件夹

(Linux device and folder)

评估板主型号

(development main model)CPU类型-内存容量

(CPU type-memory capacity)对应的设备树文件

(corresponding device tree file)

MY-IMX28-EVKMX283/7, 128Mimx28-evk.dtb以MY-IMX28-EVK为例

take MY-IMX28-EVK as an example

$ make imx28-evk.dtb

jishu_1574671_1_1.html目标文件

target file

使用ls命令可查看编译得到的目标设备树文件信息:

You can browse the target device tree file information from compilation with ls command:

$ ls arch/arm/boot/dts/*.dtb

jishu_1574671_1_1.html编译模块 (compile module)编译模块命令

command for compiling module

$ make modules

jishu_1574671_1_1.html安装模块到指定目录

Install module to the specified directory

$ make modules_install INSTALL_MOD_PATH=./modules

jishu_1574671_1_1.html打包模块文件

package the module file

$ cd modules

$ tar cjf ../modules.tar.bz2 *

jishu_1574671_1_1.html应用程序编译(application compilation)Linux应用程序编译(Linux application compilation)编写应用程序(write an application)进入工作目录

enter working directory

$ cd ~/my-imx28/01_application/

jishu_1574671_1_1.html编写源代码

write souce code

$ vim hello.c

写入以下代码并保存

write following code and saveinclude

int main(int argc, char **argv)

{

printf("Hello, MYZR!\n");

return;

}查看代码

view code

$ cat hello.c

jishu_1574671_1_1.html编译应用程序(compife application)配置环境变量

Configure environment variables

$ source ~/my-imx28/03_tools/gcc-4.4.4-glibc-2.11.1-multilib-env

jishu_1574671_1_1.html编译

compile

$ ${CROSS_COMPILE}gcc hello.c -o hello.out

jishu_1574671_1_1.html

注意:上面的命令有包含“$”号,即“${CROSS_COMPILE}gcc”,是引用我们source时产生的环境变量。

Note:The above command contains “$”,which is “${CROSS_COMPILE}gcc”. It is the environment variable generated when referring to our source.目标文件

target file

$ file hello.out

jishu_1574671_1_1.html

可以看到目标文件 hello.out 的属性。

you can see the property of target file hello.out文件系统(file system)文件系统rootfs.tar.bz2(file system rootfs.tar.bz2)

用以下的方式增加自己的应用:(把MY-IMX28_Born_Tool\Profiles\MX28 Linux Update\OS Firmware\files\image-linux-31454/rootfs.tar.bz2复制到“~/my-imx28/04_image/”目录下)。

add your own application by the following means: (copy MY-IMX28_Born_Tool\Profiles\MX28 Linux Update\OS Firmware\files\image-linux-31454/rootfs.tar.bz2 to directory of“~/my-imx28/04_image/”)

jishu_1574671_1_1.html文件系统filesystem.ubifs(file system filesystem.ubifs)

复制mkfs.ubifs,ubinize到电脑的“/usr/bin”目录下(如果电脑有这两个应用就不需要复制了);复制build_rootfs和ubinize.cfg到“~/my-imx28/04_image/”目录。

copy mkfs.ubifs,ubinize to directory of“/usr/bin”of computer(if computer has both these two applications,the copy is not needed);copy build_rootfs和ubinize.cfg to directory of “~/my-imx28/04_image/”

jishu_1574671_1_1.html烧写方式(programing mode)

至此,我们在“~/my-imx28/02_source/”得到了除文件系统以外的一套烧录文件。包括“u-boot.sb”、“imx28-evk.dtb”、“zImage”、“rootfs.tar.bz2”。

so far,we get a set of programing file under directory of “~/my-imx28/02_source besides file system ,including “u-boot.sb”、“imx28-evk.dtb”、“zImage”、“rootfs.tar.bz2”使用MFGTOOL烧写(program with MFGTOOL)

把文件“u-boot.sb”、“imx28-evk.dtb”、“zImage”、“rootfs.tar.bz2复制到“MY-IMX28_Born_Tool\Profiles\MX28 Linux Update\OS Firmware\files\image-linux-31454”目录下。按住REC按键,插上MINI USB线和电源线,接着打开MfgTool.exe,点击“扫描设备”,检测到HID设备时,松开REC按键,如下所示:

copy “u-boot.sb”、“imx28-evk.dtb”、“zImage”、“rootfs.tar.bz2 to the directory of “MY-IMX28_Born_Tool\Profiles\MX28 Linux Update\OS Firmware\files\image-linux-31454”.hold REC key,plug in MINI USB line and power cable,then open MfgTool.exe,click"scan device",detect HID device,release REC key,like below:

jishu_1574671_1_1.html

点击菜单的“Options”,然后在选项“Profiles”选择“MY-IMX28-3.14.54 NAND with uboot”,接着点击“确定”,最后点击“开始”。

click“Options”on menu,then select“MY-IMX28-3.14.54 NAND with uboot”on option of “Profiles”,then click“Enter”,finally click“start”

jishu_1574671_1_1.html

烧写成功后,点击“停止”就OK了。

when programing is successful,click"stop",to be completed

注意:如果你用的文件系统是rootfs-qt.tar.bz2,请选择“QT-MY-IMX28-3.14.54 NAND with uboot”烧写镜像。

note: if file system in use is rootfs-qt.tar.bz2, please choose “QT-MY-IMX28-3.14.54 NAND with uboot”as programing image使用网络烧写(program with network)搭建TFTP (ubuntu系统)(build up TFTP (ubuntu system))

(1) Setup tftp server files        (下载并安装tftp)

Setup tftp server files (download and install tftp)

$ sudo apt-get install tftpd tftp openbsd-inetd

(2) make a tftp directory (新建tftp目录和改变其属性)

make a tftp directory (buid tftp directory and change its property)

Here we make /home/myzr/tftpt be a tftp directory.

$ mkdir /home/myzr/tftp

$ chmod 777 /home/myzr/tftp

(3) Open /etc/inetd.conf and edit it        (修改配置文件的tftp目录)

Open /etc/inetd.conf and edit it (change tftp directory of configured file)

$ sudo gedit /etc/inetd.conf

Coment this line :tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp

Add new line:

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /home/myzr/tftp

(4)Restarting tftp service (重启tftp)

Restarting tftp service (reboot tftp)

$ sudo /etc/init.d/openbsd-inetd restart搭建NFS (网络烧写不需要用到nfs)

(build NFS (network programing does't need nfs))

(1) Install NFS server package (下载并安装nfs)

Install NFS server package.(download and install nfs)

$ sudo apt-get install nfs-kernel-server

(2) Create NFS directory:/home/myzr/nfsroot (新建nfs目录)

Create NFS directory:/home/myzr/nfsroot.(newly build nfs directory)

$ mkdir /home/myzr/nfsroot

(3) Configure mounted directory and authority (修改配置文件的nfs目录)

Configure mounted directory and authority.(change nfs directory of configuration file)

$ sudo gedit /etc/exports

Add the following line at the end of the file:

/home/myzr/nfsroot *(rw,sync,no_root_squash)

(4) Restart the NFS service (重启nfs)

Restart the NFS service.(reboot nfs)

$ sudo /etc/init.d/portmap restart

$ sudo /etc/init.d/nfs-kernel-server restarttftp下载(tftp download)

(1) 把“u-boot.sb”、“imx28-evk.dtb”、“zImage”、“filesystem.ubifs”复制到“/home/myzr/tftp”目录下。

copy “u-boot.sb”、“imx28-evk.dtb”、“zImage”、“filesystem.ubifs”to the directory of “/home/myzr/tftp”

(2) 设置环境变量(板子和电脑网线直连)

set environment variables(directly connect board with computer lan line)

$ setenv ipaddr 192.168.3.104 (板子IP)

$ setenv serverip 192.168.3.110 (电脑IP)

(3) 烧写

program

$ run update_nand_kernel (烧写zImage)

$ run update_nand_kernel.(program zImage)

  jishu_1574671_1_1.html

$ run update_nand_fdt (烧写fdt)

$ run update_nand_fdt.(program fdt)

  jishu_1574671_1_1.html

$ run update_nand_filesystem (烧写文件系统)

$ run update_nand_filesyste.(program file system)

  jishu_1574671_1_1.html登录方式(login way)串口登录(serial port login)

插上USB转串口线和电源,开机后,差不多10秒后,在终端上敲回车键可以进入系统。

plug in USB to serial port line and power supply,enter key Enter to enter system in about 10 minutes after starting the device

  jishu_1574671_1_1.htmlssh登录(ssh login)以太网登录(ethernet login)

插上网线和电源,开机后,差不多10秒后,可以软件SecureCRT登录,板子默认以太网的IP为192.168.3.104,你可以设置电脑的IP为192.168.3.110,然后配置SecureCRT,输入用户名是root,密码myzr。如下图:

plug in lan line and power supply,you can login via software SecureCRT in about 10 minutes after starting the device,the board default ehternet IP as 192.168.3.104,you can set computer IP as 192.168.3.110,then configure SecureCRT,enter root as user name and myzr as password,like below:

  jishu_1574671_1_1.html

输入完后,点击”OK“就登录完成。

after entering is over,click "ok",the login is completedUSB登录(USB可识别成网口)(USB login(USB can be identified as network port))

插上MINI USB线,开机后,差不多10秒后,可以软件SecureCRT登录,板子默认USB的IP为192.168.4.104,你可以设置电脑的IP为192.168.4.110,然后配置SecureCRT,输入用户名是root,密码myzr。如下图:

plug in lan line and power supply,you can login via software SecureCRT in about 10 minutes after starting the device,the board default ehternet IP as 192.168.3.104,you can set computer IP as 192.168.3.110,then configure SecureCRT,enter root as user name and myzr as password,like below:

  jishu_1574671_1_1.html

输入完后,点击”OK“就登录完成。

after entering is over,click "ok",the login is completed测试(test)USB测试(USB test)

直接插上U盘,挂载后可看到U盘的内容。(不是QT系统,会自动挂载)

directly insert U disk,you can see the content of U disk after mounting(if it is not QT system,there will be an automatic mounting)

  jishu_1574671_1_1.htmlSD卡测试(SD card test)

直接插上SD卡,挂载后可看到SD卡的内容。(不是QT系统,会自动挂载)

directly SD card,you can see the content of SD card after mounting(if it is not QT system,there will be an automatic mounting)

  jishu_1574671_1_1.html以太网测试(ethernet test)

插上网线,直接用ping命令测试eth0和eth1网口。默认eth0的IP为192.168.3.104,我设置eth1为192.168.3.105。如下:

plug in lan line,test eth0 and eth1 network port directly with ping command. defaulted IP of eth0 is 192.168.3.104,let's set eth1 as 192.168.3.105,as below:

     jishu_1574671_1_1.htmluart串口测试(uart serial port test)

串口uat0的设备ttyAPP0,串口uat3的设备ttyAPP3。测试时,请短接发管脚。

device ttyAPP0 of serial port uat0,device ttyAPP3 of serial port uat3,please short connect transceiver pin in test.

  jishu_1574671_1_1.html

jishu_1574671_1_1.htmlgpio测试(gpio test)

GPIO_2_26,GPIO_2_25和GPIO_2_27已经在驱动配置为GPIO功能了,下面以管脚GPIO_2_26为例,计算GPIO_2_26的管脚号为2*32+26=90,测试如下:

GPIO_2_26,GPIO_2_25 and GPIO_2_27 were set as function of GPIO in driver configuration,take pin of GPIO_2_26 as an example to figure out the no.of pin of GPIO_2_26 is 2*32+26=90,the test as below:

  jishu_1574671_1_1.htmlspi测试(spi test)

SPI接口为半双工模式,这里你只测发,通过示波器可观察到波形。方法一只发送0x55和0x75;方法二是发送字符串”myzr“。

SPI inteRFace is semiduplex mode,here you only test the sending, you can see wave shape through oscilloscope .way number 1 is to only send 0x55 and 0x75,way number2 is to send charater string"myzr"

  jishu_1574671_1_1.htmlwatdog测试(watchdog test)

“看门狗”,全称Watchdog timer,是一个在软件出错的时候可以复位计算机系统的硬件定时器。通常一个用户空间守护进程会在正常的时间间隔内通过/dev/watchdog 特殊设备文件来通知内核的Watchdog驱动,用户空间一切正常。如果用户空间出现问题(如RAM 错误,内核BUG 等),则通知将会停止,然后硬件Watchdog 将在超时后复位系统。

"watch dog",the full name is wathcdog timer,which is hardware timer to reset computer sytem when there is an error in software. usually a user space protect procedure will notice watchdog driver in kernel through special device /dev/watchdog in normal time interval that everything in user space is normal. if there is an error in user space(such as RAM error,kernel BUG and ect),the notice will be stopped,then hardware Watchdog will reset system after timeout.

测试程序中打开/dev/watchdog 设备文件,启动了Watchdog,每过一秒钟喂狗一次,系统不会重启。

/dev/watchdog device file will be opened in test program,and start Watchdog,feeding dog will happen once each second,system won't reboot.

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐