700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建 NFS TFTP服务配置

嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建 NFS TFTP服务配置

时间:2020-04-27 12:43:25

相关推荐

嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建 NFS TFTP服务配置

bootloader原理和开发——>kernel构建——>文件系统/根文件系统(filesystem/rootfs) APP

一、配置交叉编译环境(可参考嵌入式Linux移植与驱动开发cortexa8中交叉工具链的安装) 1、准备文件arm-cortex_a8-linux-gnueabi.tar.bz2 2、解压以上文件到当前用户目录下,如/home/linux/gcc 3、进入超级用户模式sudo -s 4、用vi打开/etc/bash.bashrc文件配置环境变量,在文件最后添加下面一句话 export PATH=$PATH:/home/linux/gcc/arm-cortex_a8-linux/bin/ 5、使用source /etc/bash.bashrc更新下,以便虚拟机重启后该配置仍生效 6、修改Makefile文件,用于arm架构下编译源文件 二、开发板下载程序三种方法 1、RS232 2、Net Ethernet网线 3、USB 三、头文件、初始化文件、驱动等等,文件最好分门别类存放 四、GCC过程&头文件及库的使用方法 编译器环境arm-cortex_a8-linux-gnueabi- 1、GCC gcc -E预处理 生成 .i gcc -c编译 生成 .s gcc -S汇编 生成 .o gcc -ld链接 ld可不写 生成可执行文件 2、头文件用法 自定义头文件在使用gcc时用参数 -I头文件路径 3、静态库 arm-cortex_a8-linux-gnueabi-gcc -I$(INCLUDE) -c hello/hello.c -o hello/hello.o arm-cortex_a8-linux-gnueabi-ar -rcs hello/libhello.a hello/hello.o 静态库,运行可执行文件不再需要 4、动态库 arm-cortex_a8-linux-gnueabi-gcc -I$(INCLUDE) -c good/good.c -o good/good.o arm-cortex_a8-linux-gnueabi-gcc -shared -fpic -o good/libgood.so good/good.o 动态库,运行可执行文件也需要指定库文件名以及库文件路径 5、反汇编命令 arm-cortex_a8-linux-gnueabi-objdump -d test>test.dis 6、生成bin文件 arm-cortex_a8-linux-gnueabi-objcopy -o binary test test.bin 7、缩减test文件大小,丢弃一些不要的东西 arm-cortex_a8-linux-gnueabi-strip test 8、打印出文件中的字符串,用法同7,strip改为string 五、搭建下载环境(TFTP与NFS的配置可参考嵌入式linux操作系统的使用中网络配置一文) 1. 开发板tftp使用 1.1 开发板跟tftp服务器通过网线相连 1.2 在开发板串口终端ping tftpserver (ping 192.168.3.3) host 192.168.3.3 is alive 需要设置环境变量(printev setenv) gatewayip=192.168.1.1 ipaddr=192.168.3.5 netmask=255.255.0.0 serverip=192.168.3.3 例: setenv ipaddr 192.168.3.5 saveenv 1.3 设置tftp 服务器端服务(主机) sudo /etc/init.d/tftpd-hpa restart tftpd-hpa stop/waiting tftpd-hpa start/running, process 11471 安装tftp --> 配置服务器 (sudo vim /etc/default/tftpd-hpa) --> 本机测试(tftp localhost)-->开发板测试(tftp 20008000 zImage go 20008000) 1.4 设置nfs 服务 (主机) sudo /etc/init.d/nfs-kernel-server restart Exporting directories for NFS kernel daemon...* Starting NFS kernel daemon 安装tftp服务--> 配置nfs (sudo vim /etc/exports)-->提供rootfs (tar xvf rootfs.tgz) ---> 本机测试(sudo mount -t nfs localhost:/source/rootfs ./temp)-->开发板测试 开发板终端: setenv bootargs root=nfs nfsroot=192.168.3.3:/source/rootfs ip=192.168.3.5 init=/linuxrc console=ttySAC0,115200 saveenv 1.5再次tftp 20008000 zImage---->go 20008000 注:setenv bootcmd tftp 20008000 zImage\;go 20008000一键执行 run bootcmd

六、将编译好的zImage及制作好的文件系统固化在nand flash中,zImage使用地址 100000-400000 nfs使用地址400000-800000 1、使用命令nand erase 100000 300000 //插除nand flash中100000~400000地址的数据 300000为数据块size(大小) 2、tftp 20008000 zImage //zImage为编译好的bootleader程序 3、使用命令nand write 20008000 100000 300000 //将 zImage写入nand flash中100000~400000地址范围内 4、使用命令nand erase 400000 400000 5、tftp 20008000 rootfs.cramfs //rootfs.cramfs为制作好的文件系统 6、使用命令nand write 20008000 400000 400000

7、改bootcmd——>setenv bootcmd nand read 20008000 100000 300000\;go 20008000 8、改bootargs——>setenv bootargs root=/dev/mtdblock2 ip=192.168.1.111 init=/linuxrc console=ttySAC0,115200 注:此外u-boot也是通过这个方法写入Nand Flash中。 Nand Flash中内容的构成一般为:七、将写好的裸机代码xxx.bin烧写到nand中 1、nand erase a00000 4000!!!要注意文件大小 4000的size 最多只能放16K的文件 2、nand write 20008000 a00000 4000 3、setenv bootcmd nand read 20008000 a00000 4000\;go 20008000 //将nand flash中a00000中4000size的数据读取到内存20008000的地址处,然后执行内存20008000地址开始的代码程序

嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建 NFS TFTP服务配置及Nandflash的读写

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。