对于Linux的块设备来说,其主要的是通过device_add_disk或者add_disk函数(后者是对前者的简单包装)来向操作系统添加一个设备实例。该函数完成了块设备创建、基本信息填充和块设备注册到内核等工作。对于NVMe设备来说,在初始化的时候初始化函数指针make_request_fn为nvme_queue_rq,该函数就是NVMe驱动程序的请求处理接口。
对于Linux的块设备来说,其主要的是通过device_add_disk或者add_disk函数(后者是对前者的简单包装)来向操作系统添加一个设备实例。该函数完成了块设备创建、基本信息填充和块设备注册到内核等工作。对于NVMe设备来说,在初始化的时候初始化函数指针make_request_fn为nvme_queue_rq,该函数就是NVMe驱动程序的请求处理接口。
分析参考板的BSP代码对于内核移植工作来说,主要是添加开发板初始化和驱动程序的代码。编译U-Boot时在源代码的tools目录下会生成一个mkimage可执行文件,用这个工具可以对前面编译内核时生成的zImage进行处理,以供U-Boot启动。函数的实现,可以更好地调试内核。
1、下载新内核源码:到官网,下载最新版本linux内核,保存到/usr/src/kernels目录,大约54MB。手机系统内核是Linux,linux内核是靠升级系统版本来升级内核的。2、下载手机系统升级包:一般手机厂商官网都会更新一些系统文件包供用户下载升级,我们可以可以进入自己手机品牌官网下载中心,然后根据自己手机品牌型号,下载最新的系统更新升级包,下载存放在手机SD卡当中。
2009-07-28/14:20其实Linux下还有一种高精度的定时器,那就是posix_timer。原理上来说,可以在变频的时候也使用rdtsc指令,因为CPU的频率我们也是知道的,变频的时候内核也是知道的。下面是我的timer_create的例子,编译的时候要加上rt库,这是linux的realtime库:输出结果: