linux驱动
linux驱动
玉石俱焚ing
嵌入式菜鸟
展开
-
中断下半部tasklet
在驱动中如果在中断函数中直接调用一些耗时的操作可能会引起系统崩溃,这时可以使用tasklet的调度。1.初始化staticstructtasklet_structt_isr1;tasklet_init(&t_isr1,isr1_lower_half,0);2.回调voidisr1_lower_half(unsignedlongdata){printk("runisr1_lower_half\n");}3.开始调度ta...原创 2021-10-15 15:46:04 · 57 阅读 · 0 评论 -
insmod hello.ko -1 Invalid module format最简单的解决办法
在下也是从网上搜索到的这种解决办法。遇到这种情况后,通过dmesg看一下内核日志。如果发现有如下日志,那就好办了。hello: version magic '2.6.33.3 ' should be '2.6.33.3-85.fc13.i686.PAE SMP mod_unload 686 '修改内核源码文件include/Linux/vermagic.h把如下VERMAGIC...原创 2019-11-26 21:46:31 · 329 阅读 · 0 评论 -
module_platform_driver宏
该函数实际是一个宏,它在include/Linux/platform_device.h中定义如下:/*module_platform_driver()-Helpermacrofordriversthatdon'tdo *anythingspecialinmoduleinit/exit.Thiseliminatesalotof *boiler...原创 2019-11-26 21:45:49 · 191 阅读 · 0 评论 -
no symbol version for 的解决方法
在写GPIB驱动时遇到如下错误:root@am335x:~# insmod /mnt/nfs/am335x/drive/nat9914_driver/nat9914_driver.koDisabling lock debugging due to kernel taintnat9914_driver: no symbol version for gpmc_cs_write_regn...原创 2019-11-26 21:44:05 · 1463 阅读 · 0 评论 -
linux驱动常见问题
》lsmod时会执行驱动中的init函数,rmmod时会执行驱动程序中的exit函数。init函数中申请的资源要在rmmod中释放。》mknod结合主设备号与从设备号可以创建一个设备文件》0~3G用户空间,3~4G是内核空间》内核的内存申请函数Kmalloc:分配的内存在物理上是连续的,能分配的内存较小Vmalloc:分配的内存在虚拟地址上是连续的,能分配的内存较》驱动中如...原创 2019-11-26 21:42:57 · 312 阅读 · 0 评论 -
mmc启动盘第一个块存储的分区信息
在MMC的第一个块中存有MMC的分区信息,如果分区信息不正确,在使用MMC启动时会报错dev_desc->part_type = 0 //正常的板dev_desc->part_type = 2,表示是DOS分区类型** Partition 1 not valid on device 0 **spl: fat register err - -1### ERROR ### ...原创 2019-11-25 23:25:41 · 749 阅读 · 1 评论 -
SSD ncq错误
ata1.00: failed command: READ FPDMA QUEUEData1.00: cmd 60/01:28:e1:e4:01/00:00:00:00:00/40 tag 5 ncq 512 inres 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)ata1.00: status: { DRDY }...原创 2019-11-25 23:24:56 · 2444 阅读 · 1 评论 -
Starting kernel ... 问题
如果Starting kernel ...后没有任何打印信息,可以通过以下两种方法看到打印信息,定位问题1.开启kernel的early_printk开启Kernel hacking--->Kernel low-level debugging functions和Kernel hacking--->Early printk在uboot启动项上加上earlyprintk...原创 2019-11-25 23:24:02 · 2002 阅读 · 1 评论 -
制作SD卡启动盘步骤
1.创建镜像文件dd if=/dev/zero of=sdcard.img bs=512M count=12.把镜像文件映射到loop设备上,执行后会打印出映射的loop设备losetup --show -f sdcard_1536M.img/dev/loop03.分区设备 启动 起点 终点 块数 Id 系统/dev/loop4p1 528384 1048575 260...原创 2019-11-25 23:23:08 · 1032 阅读 · 0 评论 -
NAND驱动的加载过程
1.添加gpmc平台设备(board_am335xevm.c)驱动入口文件board_am335xevm.c -> evm_nand_init() -> omap_init_gpmc() -> omap_device_build() -> omap_device_build_ss() -> omap_device_register() -> platform...原创 2019-11-26 21:44:54 · 388 阅读 · 0 评论 -
Am335x GPMC Registers
1.GPMC_REVISION Register (offset = 0h) [reset = 0h]版本寄存器7-0(REV)(R) = ip的版本2.GPMC_SYSCONFIG Register (offset = 10h) [reset = 0h]系统配置寄存器4-3(SIDLEMODE)(R/W):空闲模式0h = 强制空闲,一个空闲请求是无条件执行的1...原创 2019-11-26 21:43:36 · 1059 阅读 · 0 评论