嵌入式开发系统部署

实施步骤

1.熟悉硬件开发板先大概了解开发板提供的外接接口 ,然后了解开发板具体的硬件细节特性
CPU 内存 闪存 外设接口 通信接口
参考开发板的原理图和芯片手册

2.明确:涉及的软件资源一般都是由芯片厂家提供

3.先获取交叉编译器
注意:编译器的版本一般要和软件的版本要配套, 比如arm-linux-gcc-2.95.3就不能编译uboot-1.3.4和linux-2.6.35.7,前者编译器太老
推荐使用厂家提供的编译器

4.部署uboot (80%的bootloader是用uboot, 20%是官方提供的bootloader)
获取官方提供的uboot源码了解基本的开发板硬件和公板是否有差异, 比如串口, 内存, 闪存是否有差异, 如果没有, 要大胆假设官方提供源码是没有问题的!
如果硬件上确实存在差异, 比如内存的大小不同, 基地址不一样, 或者调试串口不一样等, 只需简单修改一下uboot的平台头文件,简单移植即可!
对源代码进行以下操作即可:

make distclean //获取最干净的源码 (做一次即可,把厂家的一些配置文件删除)
make xxx_config //配置源码 (xxx一般为开发板的名字)
make all //编译源码

生成u-boot.bin 进行烧写
此头文件涉及大量的硬件特性,将来移植,就是根据此头文件做相应的修改 ,可以多看看。
uboot源码/include/configs/xxx.h

5.部署linux内核
获取官方内核源码 对源码进行操作

    make distclean //获取最干净的源码  
    make xxx_defconfig //配置源码  
    make zImage /make uImage //编译    

一定要多多看,认真看内核源码的跟硬件相关的平台文件:
内核源码/arch/arm/mach-处理器名/mach-开发板名.c
将来硬件如果有改动,重点关注此文件!

6.部署根文件系统
可以采用官方提供的根文件系统
自己制作根文件系统 (定制)
(根文件系统不是因为大而加载时间长, 因为有一个文件脚本做了大量与项目无关的事情)

7.根据硬件外设,编写相应的设备驱动

如果驱动由官方写好,写测试程序
如果驱动没有写好,前期完成驱动的设计

8.设置系统启动参数
bootcmd: uboot用于启动内核
bootargs: 内核用于挂接根文件系统

9.内核挂接根文件系统的启动参数的设置方法:
1.利用uboot的bootargs
2.内核自身来传递参数进入内核源码,执行

make menuconfig-->
Boot options --->
(console=ttySAC2,115200) Default kernel command string
如果要修改,光标移动到这个位置,按回车键进入,进行修改:
root=/dev/nfs nfsroot=...
[ ]Always use the default kernel command string //如果选择为*,启动参数用内核自身的;
如果不选择,使用的uboot的bootargs

10.如果开发板有网络功能,就是开发板具有网卡,软件测试一般建议使用NFS网络文件系统;
如果没有网络,那就采用USB来调试,如果没有USB,那么就采用串口 (非常痛苦,速度非常慢)!
如果采用网络,NFS网络服务的配置,需要注意以下事项:
1.linux系统安装nfs网络服务
2./etc/exports添加共享目录
3.启动nfs网络服务
sudo /etc/ini.d/nfs-kernel-server restart
4.内核一定要支持NFS网络


案例:利用官方内核让系统运行起来,采用NFS网络文件系统,

实施步骤:
1.创建内核源码存放在/opt/目录
2.修改/opt目录的用户和组为tarena用户和tarena组
sudo chown tarena /opt -R
sudo chgrp tarena /opt -R

*鄙视一切的操作用超级用户的程序员

3.从ftp/drv目录下载官方内核kernel.tar.bz2
4.cp kernel.tar.bz2 /opt/
5.tar -xvf kernel.tar.bz2 //生成kernel目录

6.对源码进行操作:
cd /opt/kernel
make distclean //获取最干净的源码
make cw210_defconfig //配置源码
make zImage //编译源码
cp arch/arm/boot/zImage /tftpboot

7.添加NFS网络文件系统相关的服务

sudo vim /etc/exports添加 /opt/rootfs共享目录
sudo /etc/init.d/nfs-kernel-server restart //启动服务

8.进入uboot, 设置启动参数
setenv bootcmd tftp 20008000 zImage \; bootm 20008000
(如果干掉bootargs: setenv bootagrs save )
setenv bootargs root=/dev/nfs nfsroot=192.168.1.8:/opt/rootfs ip=192.168.1.110:192.168.1.8:192.168.1.1:255.255.255.0::eth0:on
init=/linuxrc console=ttySAC0,115200
saveenv

9.重启开发板,挂接虚拟机的/opt/rootfs

10.在开发板上执行: cat /proc/cmdline //查看内核的启动参数

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值