Chinaunix首页 | 论坛 | 博客
  • 博客访问: 819483
  • 博文数量: 264
  • 博客积分: 592
  • 博客等级: 中士
  • 技术积分: 1574
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:02
文章分类

全部博文(264)

文章存档

2019年(2)

2018年(1)

2017年(1)

2016年(4)

2015年(14)

2014年(57)

2013年(88)

2012年(97)

发布时间:2012-12-19 15:07:29

    在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin版本Image),具体的入口可以在arch/arm/kernel/vmlinux.lds.S(最终的链接脚本是通过这个文件产生的)中获得: ...... SECTIONS { #ifdef CONFIG_XIP_KERNEL . = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR); #else . = PAGE_OFFSET + TEXT_OFFSET; #endif .init : { /* Init co......【阅读全文】

阅读(833) | 评论(0) | 转发(0)

发布时间:2012-12-19 14:41:29

应用程序必须经过编译、汇编和链接后才变成可执行文件,在链接时,要对所有目标文件进行重定位(relocation),建立符号引用规则,同时为变量、函数等分配运行地址。当程序执行时,系统必须把代码加载到链接时所指定的地址空间,以保证程序在执行过程中对变量、函数等符号的正确引用,使程序正常运行。在具有操作系统的系统中,重定位过程由操作系统自动完成。  在设计Bootloader程序时,必须在裸机环境中进行,这时Bootloader映像文件的运行地址必须由程序员设定。通常情况下,将Bootloader程序下载到ROM的0x0地址进行启动,而在大多数应用系统中,为了快速启动,首先将Bootloader......【阅读全文】

阅读(905) | 评论(0) | 转发(0)

发布时间:2012-12-19 14:29:00

    在移植bootloader到新嵌入式开发板的过程中经常会碰到初始化DDRx和DDR控制器的问题。而现在较高端的嵌入式CPU中早已集成了DDR2甚至DDR3控制器,这相较于早期使用SDRAM的CPU,在初始化的时候可能会复杂许多。再加上这些代码一般是在系统刚启动的时候运行的,通常为汇编代码,看着那一大坨汇编程序,不免有些恐惧感。但是如果对DDRx内存原理及其与DDRx控制器的关系有些了解的话,这个配置工作其实还是有章可循的。下面我根据自己的开发经验总结如下,但是此处不涉及具体代码,只对一般流程做描述,因为代码必须是和硬件配套的。如果你先看具体代码,......【阅读全文】

阅读(611) | 评论(0) | 转发(0)

发布时间:2012-12-19 11:33:43

Linux设备驱动程序学习(14) -Linux设备模型(各环节的整合)   通过一个设备在内核中生命周期的各个阶段,可以更好地理解Linux设备模型。我将通过分析lddbus和sculld的源码来了解Linux设备模型中各环节的整合。《LDD3》中的(PCI总线)各环节的整合这部分内容作为参考资料,因为嵌入式Linux比较少用到PCI总线。看这部分内容一定要先熟悉一下 lddbus 和 sculld 的源码。   一、lddbus模块:添加总线、导出总线设备和设备驱动的注册函数。 lddbus子系统声明了一个bus_type结构,称为ldd_bus_......【阅读全文】

阅读(692) | 评论(0) | 转发(0)

发布时间:2012-12-19 11:33:24

编写 USB 驱动程序 (本部分的一些示例源码来自drivers/usb/usb-skeleton.c,它是Linux内核为我们提供的最基础的USB驱动程序,USB骨架程序)   驱动程序把驱动对象注册到 USB 子系统中,之后使用供应商(idVendor)和设备(idProduct)标识来判断对应的硬件是否已经安装.   驱动的设备支持列表   struct usb_device_id 结构提供了这个驱动支持的不同类型 USB 设备的列表. USB 核心通过此列表用来决定设备对应的驱动,热插拔脚本也通过此列表来决定当特定设备被插入系统时,应该自动加......【阅读全文】

阅读(464) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册