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的读写相关推荐

  1. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证

    <Linux就该这么学>培训笔记_ch00_认识Linux系统和红帽认证 文章最后会post上书本的笔记照片. 文章主要内容: 认识开源 Linux系统的种类及优势特性 认识红帽系统及红帽 ...

  2. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

  3. OpenCV基于ARM的Linux系统的交叉编译

    OpenCV基于ARM的Linux系统的交叉编译 基于ARM的Linux系统的交叉编译 先决条件 获取OpenCV源代码 获取最新的稳定OpenCV版本 从Git存储库中获取最新的OpenCV 构建O ...

  4. linux系统下nginx安装目录和nginx.conf配置文件目录

    linux系统下nginx安装目录和nginx.conf配置文件目录 1.查看nginx安装目录 输入命令 # ps  -ef | grep nginx 返回结果包含安装目录 root      26 ...

  5. Linux 上 NetBSD 交叉编译环境搭建

    Linux 上 NetBSD 交叉编译环境搭建 NetBSD 以高移植性著称,支持众多的处理器架构,并且它的代码和工具稳定性非常高,包括各种接口,工具等.并且由于 BSD 授权的宽松条件,对于构建商业 ...

  6. 在Windows系统中搭建PHP环境,PHP环境搭建-Windows系统下PHP环境搭建

    1.PHP环境搭建的前提是 Apache HTTP Server (Apache 服务器)已经安装部署成功,并可以正常访问到服务器的主页面.Apache HTTP Server 的安装部署已经在上一篇 ...

  7. arm架构linux系统平板电脑推荐,x86平板电脑排行_X86平板电脑推荐成垃圾,ARM架构平板电脑品牌是王道...

    X86平板电脑推荐成垃圾,ARM架构平板电脑品牌是王道 JPG,602x402,231KB,374_250 x86平板电脑推荐 JPG,602x402,231KB,374_250 x86平板电脑推荐 ...

  8. 嵌入式软件开发培训笔记——boot原理与u-boot 基于Cortex_A8核的S5PC100芯片

    一.boot原理 1.解决系统启动 (参考s5pc100手册 --->  2.1节 irom code) The boot loader is divided into the BL0(1st ...

  9. 嵌入式软件开发培训笔记——c编程基础

    参考书籍:大学电子或计算机专业C程序设计教程. 编译环境:linux操作系统下的gnu-gcc 完成c经典100题编写(题目在网上随处都能搜到) 一个很好的segment error检查方法 例程文件 ...

最新文章

  1. python最难学的是什么_python是最难学的语言吗
  2. oracle集群 节点切换不,Oracle 11gR2 RAC集群单节点关闭开启
  3. Boost::context模块callcc的解析器测试程序
  4. Python 分析天气,告诉你中秋应该去哪里
  5. linux ping策略打开_Linux Iptables允许或阻止ICMP ping请求
  6. SUSE12SP3-Mycat(4)rule.xml配置详解
  7. MariaDB一之编译安装MariaDB、MariaDB初始化及MariaDB的图形化工具
  8. 安装 samba 记录
  9. js对文字的修饰 big() small() fixed() toUpperCase() toLowerCase()
  10. Mutex(互斥锁)
  11. c语言链表学生考勤,(完整word版)学生考勤管理系统
  12. 叶片静频测量方法理论基础(自振法上)
  13. 百度导航5.0之后的坑
  14. ClickHouse-物化视图
  15. 程序运行所花费的时间如何计算
  16. html制作钟表盘,jquery+html5制作超酷的圆盘时钟表
  17. C/C++动态内存申请与释放
  18. 【互联网人的英语】什么时候适合用“词根词缀法”来背单词?
  19. 电视信号中的一些基本概念 (转自驱动之家)
  20. 图像一阶倒数和二阶导数的区别与联系

热门文章

  1. 一篇文章看懂如何用好海外私域流量运营工具
  2. apm官网上apm planner 2 和 Mission Planner有什么区别
  3. matlab作图背景黑色,【matlab】版本2014a 修改背景为酷炫暗黑色
  4. 华为mate7刷鸿蒙系统,鸿蒙操作系统+144Hz高刷华为Mate40,华为Mate30前辈低价创历史...
  5. log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper). log4j:WARN Pleas
  6. VTK学习笔记(九)VTK中的各个模块
  7. heritrix源码分析(未完成。太长了!!)
  8. SQL数据库还原时备份集中的数据库备份与现有的数据库不同的解决办法
  9. Brighter3d无法渲染可导入REVIT渲染
  10. 【xshell】XSHELL操作指南