1、linux驱动开发与裸机开发的区别
Linux系统驱动和裸机驱动的主要区别在于运行时的环境和依赖。Linux系统驱动依赖于Linux内核提供的API和服务,而裸机驱动则是在没有操作系统支持的情况下直接与硬件交互。因此,两者的开发和调试方法也有很大差异。
2、驱动基础
2440里的IRAM ,ubuntu与ARM之间通过net(网络)连接
页表:记录虚拟地址与物理地址之间的关系。
norflash接在0地址,程序放在 norflash,上电后pc指向0地址,程序刚好可以运行。(程序放在nandflash就不能运行,pc没有指向)
要想访问nandflash,需要专用程序/控制逻辑。
内存:掉电数据丢失
flash:掉电不丢失
norflash和nandflash
我们开发板上的nandflash大小256M,norflash2M
norflash: 可线性访问,和内存的访问方式相同---有专用的数据、地址、控制总线
nandflash: 不可线性访问,需要有程序配合访问
内核的任务
加载完后先启动init进程(内核里的进程),init退化到应用层,init再创建其他进程(shell nfs等)
跟文件系统
bootloader:
bootloader放在nandflash里时:系统上电后,会自动搬移nandflash前4KB的程序到IRAM中,将0地址映射到0x40000000(IRAM的地址)地址处,bootloader在前4KB代码中初始化 好内存,并将自己剩余的部分搬移到内存中运行。
在norflash里时: 系统上电后,PC默认指向0地址处(norflash被连接到0