嵌入式Linux移植环境搭建

【1】嵌入式Linux移植流程

 windows:
 BIOS(引导系统)---> windowns镜像---> 驱动移植---> 文件系统
 Linux:
 bootloader(uboot2013)---> Linux内核(linux3.14)---> 驱动移植---> 文件系统(rootfs)
 

【2】指令

 1)readelf
 查看对象文件的属性或内容(对象文件:可重定向文件 .o  可共享文件 .so  可执行文件)
  readelf  -h   +  filename
 2)as主要用来编译gcc输出的汇编文件
    as test.s -o test.o
 3)size列出目标文件每一段的大小以及总体的大小
    size  + filename
 4)nm可以列出目标文件中的符号
    B  未初始化数据段  
D  已经初始化的变量的符号
T  Text段的符号。子程序都是这种符号
U  未定义的符号,该符号在当前文件中未定义
C  未初始化的符号,比如定义了一个全局变量int a;则a的符号就是这种类型,被其他文件所引用
    R  只读符号  const修饰
 5)strip用来丢弃目标文件中的全部或者特定符号,减小文件体积
 6)strings用来打印某个文件的可打印字符串
      strings  + xxx.o
 7) objdump可以显示一个或者更多目标文件的信息,主要用来反汇编
    objdump -d main > main.dis
 8) objcopy可以进行目标文件格式转换
     objcopy -O binary main main.bin
 9)addr2line能够把程序地址转换为文件名和行号
    addr2line 0x080483f1 -e main -f
 

【3】交叉编译工具-跨平台编译

 在开发主机运行编译器编译内核、应用程序。内核和程序在目标机上运行,这个编译过程称为交叉编译
 

【4】搭建环境

  •  TFTP服务器
 tftp  是用来下载远程文件的最简单网络协议,它基于udp协议而实现。
 
 嵌入式 linux 的 tftp 开发环境包括两个方面:
      一是 linux 开发主机端的 tftp-server 支持,
      二是嵌入式目标系统的 tftp-client 支持
 
 使用条件是:
     需要网络连接
      主机端需要安装 tftp 服务器软件,只需要配置tftp服务器主机端
     目标机需要实现tftp客户端
 

 tftp服务器主机端配置:

 1)检测是否安装

   dpkg  -s   tftpd-hpa
 2)安装
     sudo apt-get install tftpd-hpa tftp-hpa

 3)

    sudo vi /etc/default/tftpd-hpa  		更改主机端配置
    TFTP_USERNAME="tftp"            		tftp服务器的名字
    TFTP_DIRECTORY="/tftpboot"      		tftp传输目录,自行创建  sudo mkdir tftpboot
	                                        修改权限  sudo chmod 777 tftpboot
    TFTP_ADDRESS="0.0.0.0:69"    		端口号   netstat -an | more
    TFTP_OPTIONS="-c -s -l"      		tftp服务器配置参数  -c   create 可创建
	                                        -s   server 
						-l   listen  监听
 4)启动服务器

   sudo service  tftpd-hpa restart  

5)运行下面命令,新建一个文件,并将其移动到TFTP服务器的默认下载上传下载文件夹tftpboot

$echo "tftp test" > test.txt
$sudo mv test.txt /tftpboot
6)运行下面指令,从服务器上下载test.txt文件,并退出tftp程序

$ tftp localhost
tftp> get test.txt
tftp> q
7)如果tftp的下载不成功,运行下列指令卸载软件(连同配置信息一起),然后再重装TFTP服务器

$sudo apt-get remove --purge tftp-hpa tftp-hpa
$sudo apt-get install tftp-hpa tftp-hpa
sudo service tftp-hpa restart

  • nfs服务器--共享

  NFS 服务主要的任务是把本地的一个目录通过网络导出,其他计算机可以远程访问该目录
 
  使用条件是:
 需要网络连接
  主机端需要 nfs 服务器软件支持,只需要配置服务器主机端

  目标机同样需要支持nfs

 NFS服务器主机端:

 1) NFS服务器安装

sudo apt-get install nfs-kernel-server

2)  nfs服务器主机端配置:

 sudo vi /etc/exports
 添加:/source/rootfs/ *(rw,sync,no_subtree_check,no_root_squash)

其中:

 /source: 共享目录  自行创建   sudo mkdir source

                    修改权限   sudo chmod 777 source

*:不限定客户端

rw:共享目录可以读写

sync: 同步写入内存和硬盘
no_subtree_check : 如果子目录可以共享,那么不检查父目录的权限
no_root_squash :     如果客户端是root的话,那么他对这个目录具有root的权限
 
  
 3)重新启动nfs服务器主机端:
 sudo  /etc/init.d/nfs-kernel-server restart


设置启动参数: 

 #目标板输入以下指令:
 setenv serverip 192.168.31.161
 setenv ipaddr 192.168.31.123
 setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000
 setenv bootargs root=/dev/nfs nfsroot=192.168.31.161:/source/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.31.123
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式Linux系统移植是将Linux系统移植嵌入式设备上的过程,它是进行Linux驱动开发的基础。嵌入式Linux系统移植包括搭建交叉开发环境、选择和移植bootloader、设置、编译移植和调试内核,以及制作根文件系统等步骤。\[1\] 在进行嵌入式Linux系统移植时,需要安装交叉编译器,并确定目标机和主机的连接方式,搭建主机-目标机数据传输通道。同时,还需要编译三大子系统,包括bootloader子系统、内核核心子系统和文件系统系统。最后,进行烧写和测试。\[1\] 在64位Linux上安装arm-linux-gcc-4.5.1交叉编译器时,需要先安装32位的库,因为arm-linux-gcc-4.5.1-v6-vfp-20120301是在32位的Linux编译的。\[2\] 需要注意的是,在嵌入式Linux移植过程中,并没有涉及制作交叉编译器、编译U-Boot、编译内核和编译根文件系统的内容。这些内容会在后续的博文中进行讲解。\[3\] 交叉编译器的作用是将源代码从一种体系结构编译成另一种体系结构的可执行文件。在嵌入式Linux开发中,由于嵌入式设备和开发主机的体系结构不同,因此需要使用交叉编译器来生成适用于嵌入式设备的可执行文件。\[3\] #### 引用[.reference_title] - *1* *2* *3* [【Linux嵌入式Linux系统移植(上篇:交叉编译器、连接方式)](https://blog.csdn.net/qq_38410730/article/details/90200433)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值