随笔分类 - 8.内核移植transplant
摘要:1.常用函数改动 1)device_create() 作用: 创建设备节点 头文件: #include <linux/device.h> 替代了2.6内核里的class_device_create()函数 2)device_destroy() 作用:卸载设备节点 头文件:#include <linu
阅读全文
摘要:在上章-使内核支持烧写yaffs2,裁剪内核并制作补丁了 本章,便开始移植以前2.6内核的驱动到3.4新内核 1.介绍 首先内核更新,有可能会重新定义新的宏,去除以前的宏,以及更改函数名等 所以移植驱动的过程如下: 1)编译 2)解决错误 ->2.1)头文件不对:去掉或改名 ->2.2)宏不对:改名
阅读全文
摘要:在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章主要内容如下: 1)使内核支持yaffs2文件系统 2)裁剪内核 3)制作内核补丁 1.首先获取yaffs2源码(参考git命令使用详解) 2.将yaffs2源码来配置到内核里(使内核支持yaffs2) 找到以下几段话: 参考上图: 搜
阅读全文
摘要:1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: 1.1然后我们进入cmd_bootm.c,找到对应的bootm命令对应的do_bootm(): 上面的boot_os_fn
阅读全文
摘要:在上一章,裁剪uboot以及分区后,本章主要使uboot支持yaffs以及制作补丁 1. 修改uboot支持yaffs 首先,每个命令都会对应一个文件,比如nand命令对应的common/cmd_nand.c 而我们使用nand命令时,便会进入do_nand()函数,位于common/cmd_nan
阅读全文
摘要:在上一章使uboot支持网卡传输文件后,但是每次启机时,环境变量都要变为默认值,需要重新设置ip,MAC地址才行,由于没有配置mtdparts命令,启动内核也不成功 所以本章主要学习: 1)修改环境变量默认值 2)裁剪uboot 3)分区,设置mtdparts命令 1.修改之前,先来理解下uboot
阅读全文
摘要:在上一章,使uboot能够支持nor、nand 本节继续修改让uboot支持DM9000C网卡,便可以通过网络来传输文件 首先uboot已带有dm9000网卡的驱动,位于drivers/net/下的dm9000x.h、dm9000x.c 1.DM9000C介绍 参考之前写的移植DM9000C驱动章节
阅读全文
摘要:在上一章,我们添加了nor,nand启动后,uboot启动出如下图所示: 上面的Flash: *** failed *** 是属于uboot第二阶段函数board_init_r()里的代码, 代码如下所示(位于arch/arm/lib/board.c): 从上面代码看出, board_init_r(
阅读全文
摘要:上章分析了uboot启动流程后,接下来便来配置新的单板,实现nor、nand启动 1.首先在uboot里新建单板2440 1.1将2410的单板文件夹拷贝成2440: 然后将smdk2440下的smdk2410.c改为smdk2440.c,以及修改更改好的Makefile 1.2 将2410的头文件
阅读全文
摘要:本节总结: uboot启动流程如下: 1)设置CPU为管理模式 2)关看门狗 3)关中断 4)设置时钟频率 5)关mmu,初始化各个bank 6)进入board_init_f()函数 (初始化定时器,GPIO,串口等,划分内存区域) 7)重定位 复制uboot,然后修改SDRAM上的uboot链接地
阅读全文