Linux驱动开发学习笔记-1

#ARM嵌入式Linux系统开发详解
##工具链
编译分为预处理、编译、汇编与链接,GNU将这些过程中使用到的工具包含在Binutils、GCC和Glibc中。Binutils包含与二进制处理相关的工具如as、ld、objdump、strip等;GCC包含各种语言的编译器;Glibc包含C库。
##嵌入式系统的初始化
嵌入式系统没有BIOS,用于启动的代码必须由用户完成,这部分代码为BootLoader。(有的嵌入式设备也有固化的代码,处理一些初始化任务如AT91SAM9260)BootLoader初始化硬件设备、建立内存空间的映射,将系统的软硬件环境设定在一个合适的状态,为加载操作系统内核和应用程序做准备。
基于ARM内核的处理器在系统加电或复位后,从地址0x00000000处取第一条指令,通过烧写工具可以把BootLoader程序写在存储器的起始位置,系统加电或复位后可以执行BootLoader程序。
启动流程:上电--------->设置中断向量--------->配置系统寄存器--------->初始化看门狗和外围电路--------->初始化存储器--------->初始化堆栈指针--------->进入BootLoader业务流程--------->加载Linux内核映像--------->启动Linux内核--------->进入Linux系统
##BusyBoxx
BusyBox是Linux平台的一个工具集合,把Linux常用的命令和工具以及服务程序集成在一个可执行程序内,通常体积在1MB左右,适合嵌入式系统。
GDB core文件调试段错误。
#Linux设备驱动开发详解 基于4.0内核
+ 当不存在操作系统的时候驱动连接硬件与应用程序,有操作系统的时候驱动连接硬件与内核;
+ 驱动针对存储器和外设,主要分为字符设备、块设备和网络设备。字符设备和块设备都被映射为文件系统的文件和目录,Linux针对NOR、NAND提供了独立的MTD,在其上运行YAFF2、JFFS2等文件系统
+ 冯诺依曼结构(普林斯顿结构):Intel公司的中央处理器、ARM的ARM7、MIPS,程序指令存储器和数据存储器合并在一起,程序指令和数据的宽度相同;哈佛结构:程序指令和数据分开存储,可以有不同的宽度,采用独立的程序总线和数据总线,执行效率较高;
+ 数字信号处理器(DSP)针对通信、图像、语音和视频等领域而设计,包含了独立的硬件乘法器,优化了卷积、FFT中的大量重复乘法;TMS320
ARM + DSP有叠加趋势;NOR Flash支持XIP(芯片内可执行)
+ Linux2.6后的内核特点:新的调度器、内核抢占(依然有无法抢占的原子操作,Linux内核本身只提供软实时)、改进的线程模型NPTL、虚拟内存的变化(反向映射技术)、增加了对日志文件系统的支持、音频ALSA、总线设备驱动模型、电源管理、联网和IPSec、用户界面层
+ 内核一般做到drivers和arch的软件架构分离,驱动中不包含板级信息,让驱动跨平台。Linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信5个子系统组成;
+ Kconfig文件描绘出分层次的配置,在内核中新增程序需要完成3项工作:将编写的源代码复制到Linux内核源码相应目录中、在目录的kconfig文件中增加对于新源码的编译配置选项、在Makefile中增加对新源码的编译条目。
+ Linux内核模块主要由模块加载函数(__init、module_init)、模块卸载函数(__exit、module_exit)、模块许可证声明、模块参数(module_param)、模块导出符号(EXPORT_SYMBOL、EXPORT_SYMBOL_GPL)、模块作者(MODULE_AUTHOR、MODULE_DESCRIPTION)等;
+ C库函数对系统调用的封装
+ Linux2.6内核中udev取代了devfs,udev完全在用户态工作
+ 总线、设备驱动和设备
+ 设备树由一系列被命名的节点和属性组成,基本上就是画一棵电路板上CPU、总线和设备组成的树。dtc将.dts文件编译成.dtb,U-boot从v1.1.3开始支持设备树。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值