系统移植--------->第四天,ubooot的制作流程、浏览ubooot源码的方法、linux内核配置和编译概述、init进程的分析

制作uboot:

  1. 源码, vi Makefile , 指定交叉编译工具链
  2.  vi  boards.cfg  ------------ 查看到已支持的板子,
  3. make origen_config , make  生成origen板子的uboot
  4. uboot 源码不支持当前的开发板 
  5. 查看uboot 支持不支持当前开发板的处理器 , 不支持结束
  6. 参考uboot已支持开发板orgien(和当前开发板是同样的处理器)
  7. 拷贝origen开发板的c代码
  8. 拷贝origen开发板的配置文件
  9. vi boards.cfg ,新增一个开发板fs4412
  10. make fs4412_config ,   生成uboot 针对fs4412开发板的配置文件
  11. make ---------- 生成针对fs4412开发板的u-boot.bin

   12 .点灯法 ------------ 确保u-boot.bin 被搬到ddr

   13 .串口输出

  1. 网络芯片移植, uboot的网络命令(ping, tftp等)就可以执行
  2. 电子硬盘的移植(emmc), uboot的电子硬盘的命令(movi read, movi write等)就可以执行

补丁的方式制作u-boot-fs4412.bin

浏览u-boot 源码?

arm-none-linux-gnueabi-objdump -dl u-boot > u-boot.s

vi  u-boot.s

在vi里,移动光标------->有路径、文件的行------->按gF------>跳转到源代码------->ctrl+o 退出源码

linux内核配置和编译:

.config   当前的配置

make menuconfig 继续配置, 配置的结果保存.config

各个目录下的Makefile

编译各个目录的时候, 依赖.config , 参考各个目录下的Makefile, 就知道哪些文件会被编译到内核 

各个目录下的Kconfig

Kconfig 文件提供了(图形化配置界面里的)菜单选项TEST_CONFIG, 用户make menuconfig 去打开或关闭TEST_CONFIG , 在Makefile 文件里, 依赖开关TEST_CONFIG,选择性的编译或不编译某些程序到内核

uImage 不管下载到内存的哪里,最终解压到 40008000

生成内核过程:

vmlinux ----------- elf格式, 最原始的内核, 未经压缩的内核

zImage ---------- zlib 压缩后的内核

uImage --------- 64字节的头 + zImage ---------------- bootloader是uboot的时候, 使用uImage

内核调试方法:

  1. 点灯法
  2. 串口输出信息:
    1. puts --------------内核解压前
    2. printfascii --------------- 内核解压后, console 初始化前
    3. prink ---------- 内核解压后, console 初始化后

printk(KERN_ERR“this is a error for mem\n”);

printk(“this is a error for mem\n”);

printk 打印级别:

cat  /proc/sys/kernel/printk  查看当前中断的printk 的打印级别

4              4                  1                                                 7

门槛        默认级别       门槛值的最小(最高优先级)      默认的门槛值

echo “ 2    5     1     7” > /proc/sys/kernel/printk------> 修改级别

再次查看级别 cat /proc/sys/kernel/printk

2   5    1   7

内核信息的查看手段:

cat /proc/kmsg ----------------- 查看内核的打印信息(操作内核)

dmesg | tail  ----------------- 查看内核最新的20 条信息

linux 下, 设备即文件

创建设备文件:

mknod  /dev/xxxx    c    250    100

在dev目录下产生设备文件xxxx,  c------ 字符设备文件,   250 -- 主设备号  100 -- 从设备号

 

init进程:

1.解析inittab 文件

id:runlevel:动作:针对这个动作需要的处理

::sysinit:/etc/init.d/rcS               

2.开始执行rcS

vi  init.d/rcS

3.依赖fstab 文件, 开始挂载

/bin/mount -a              

4.挂载devpts 到  /dev/pts 目录

mkdir /dev/pts

mount -t devpts devpts /dev/pts  

5.让/sbin/mdev 程序成为内核的热插拔程序

echo /sbin/mdev > /proc/sys/kernel/hotplug   

6.使用mdev 程序创建设备文件

mdev -s   

7.执行profile

8.进入shell

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值