Linux系统移植学习笔记1
一、U-boot的移植
1.准备工作
1.本地开发和交叉开发
①本地开发:本地编写代码,本地编译代码,本地运行代码
②交叉开发:本地编写代码,本地编译代码,开发板运行代码
2.ubuntu系统=linux内核+GUI+动态库+命令+文件系统
3.GNU命令(GNU’s not unix一个提倡软件自由的组织)
1. gcc/g++
2. gdb
3. ld 链接
将所有的.o文件链接生成.elf文件
4. objdump
将elf文件生成反汇编文件(.dis)
5. objcopy
将elf文件生成纯粹的二进制文件(.bin)
6. nm 查看符号表 (了解)
nm ***.elf
7. size 查看文件各个段的大小 (了解)
size ***.elf
8. readelf 查看elf文件的信息 (了解)
readelf -h ***.elf
9. strip 用于缩小文件的体积 (重点)
注意: 不可以对中间文件执行strip,
比如***.o
strip ***.elf // 不影响程序的正常运行
10. addr2line 根据地址定位错误信息 (重点)
常用于段错误,
addr2line 地址 -e ***.elf -f
-e:指定可执行文件
-f:回显函数名
定位错误的信息,函数名及函数所在的文件及行号
gnu命令 --help : 查看gun命令的帮助手册,借助百度。
4.安装ubuntu版本的交叉编译工具链
1. 在ubuntu的家目录下创建toolchains
2. 拷贝交叉编译工具链到toolchains目录下,
并进行解压缩
FS6818(学生资料)\工具软件\ubuntu版本交叉编译器\gcc-4.5.1.tar.bz2
tar -xvf gcc-4.5.1.tar.bz2
3. 配置ubuntu系统的环境变量
/etc/envirenment
/etc/profile
/etc/bash.bashrc
~/.bashrc
修改/etc/bash.bashrc,在最后边添加一下内容
export PATH=$PATH:/home/linux/toolchains/gcc-4.5.1/bin
4. 使环境变量立即生效
source /etc/bash.bashrc
./xxx.sh
bash xxx.sh 开一个子终端执行shell脚本
source xxx.sh 当前终端执行shell脚本
5. 测试交叉编译工具链是否安装成功
arm-none-linux-gnueabi-gcc -v
64位ubuntu系统 :
sudo apt-get install libncurses5-dev
sudo apt-get install lib32z1
ps.不同的硬件平台,或者不同的linux和u-boot,源码的版本不一致,用到的交叉编译工具链版本也不一样。
5.安装tftp服务
(Trivial File Transfer Protocol:基于TCP/IP协议的一个用来在客户机与服务器之间进行简单文件传输的协议)
作用: 通过TFTP服务下载文件到开发板中
1. 检查ubuntu是否安装了tftp服务
sudo dpkg -s tftpd-hpa
打印以下内容表示安装了tftp服务:
Architecture: i386
Source: tftp-hpa
Version: 5.2-7ubuntu3.1
2. 安装tftp服务 (前提:ubuntu必须能连接外网)
sudo apt-get update 更新源
sudo apt-get install -f 跟新依赖
安装tftp服务的命令:
sudo apt-get install tftpd-hpa tftp-hpa
3. 配置tftp服务
1. 在家目录下创建一个tftpboot文件夹
mkdir tftpboot
目的:tftpboot目录下存放的是你要下载到
开发板上的可执行文件
2. 修改tftpboot的权限
chmod 777 tftpboot
3. 配置tftp服务的环境变量
打开sudo vi /etc/default/tftpd-hpa
修改一下内容:
1 # /etc/default/tftpd-hpa
2
3 TFTP_USERNAME="tftp"
tftp用户名,不需要修改
4 TFTP_DIRECTORY="/home/hqyj/ttpboot"
tftp服务下载文件的存放的路f径,需要修改
改成自己的对应的tftpboot的路径
5 TFTP_ADDRESS="0.0.0.0:69"
tftp服务默认使用的69端口号
6 TFTP_OPTIONS="-c -s -l"
tftp服务的参数,这个需要修改
-l:以standalone/listen模式启动TFTP服务
-c:可创建新文件。默认情况下,
TFTP只允许覆盖原有文件,不能创建新文件。
-s:改变TFTP启动的根目录。
加了-s后,客户端使用TFTP时,
不再需要输入指定目录,填写文件的完整路径,
而是使用配置文件中写好的目录。
这样也可以增加安全性。
4. 重启tftp服务(只需要执行一个)
1. sudo service tftpd-hpa start 启动TFTP服务
2. sudo service tftpd-hpa restart 重启TFTP服务(默认执行重启)
注意:有时一旦重启系统或者长时间不使用tftp服务,
都需要重启tftp服务
5. 本地测试tftp服务是否安装成功
$ tftp 127.0.0.1 # 本地回环测试IP地址
tftp> get 1.txt # 从tftpboot目录下下载,
# 需要在tftpboot目录下创建1.txt

本文为Linux系统移植的学习笔记,主要聚焦于u-boot的移植过程。首先介绍了移植前的准备工作,包括本地与交叉开发的区别、ubuntu系统组成、安装交叉编译工具链、tftp与nfs服务的配置。接着,详细讲解了bootloader的概念,u-boot与其他bootloader的区别,并突出u-boot的特点。此外,还强调了u-boot支持的重要命令以及开发板系统的部署方法,最后分享了移植u-boot源码特别是loadb命令的具体步骤。
最低0.47元/天 解锁文章
1849

被折叠的 条评论
为什么被折叠?



