關於EXYNOS4除錯的問題

2021-08-20 20:00:17 字數 1260 閱讀 3319

一般乙個普通的字元類裝置驅動要經歷下面的幾個步驟

整個流程如下

/*標頭檔案

#include

#include

#include

#include

#include

#include

#include

#include

#include

整個驅動模組大框架 module_init(scdev_init); 

申請裝置號 num_dev = mkdev(numdev_major,numdev_minor);

ret = register_chrdev_region(num_dev,device_minor_num,device_name);

ret = alloc_chrdev_region(&num_dev,numdev_minor,device_minor_num,device_name);

建立裝置類 myclass=class_create(this_module , device_name);

申請你想要的資料型別的記憶體 

struct reg_dev *my_devices; 

my_devices = kmalloc(device_minor_num * sizeof(struct reg_dev),gfp_kernel);

初始化這段記憶體

memset(my_devices,0,device_minor_num * sizeof(struct reg_dev));

實現裝置函式fops

cdev_init(&dev->cdev,&my_fops);

dev->cdev.owner = this_module;

dev->cdev.ops = &my_fops;

註冊裝置到系統

err = cdev_add(&dev->cdev,devno,1);

建立裝置節點

device_create(myclass,null,mkdev(numdev_major,numdev_minor+i),null,device_name"%d",i);

初始化具體硬體 iic io spi....

***x_init();

這其中不能忘記硬體的初始化,因為這是個板集支援包和板子linux系統的橋梁

另外就是裝置節點的裝置號要和註冊裝置到系統 cdev_add 中的裝置號一致

這樣才能完成乙個裝置的使用。

申請的記憶體要記得釋放,而且要逐級釋放,不能有遺漏,否則會造成記憶體漏洞

關於shell的除錯問題

1,如果你在shell指令碼裡看見了這樣一句話 set e 這句話一般是寫在shell指令碼的開頭第二句的,就是說從 set e 之後出現的語句如果執行錯誤就是返回值為非0,程式就直接退出。2,如果你在shell指令碼裡看見了這樣一句話 set x 這句話的意思就是說在執行命令前會列印命令 例 fi...

關於ie的js除錯問題

專案採用了extjs配合googlemap以及乙個ext的 結果產生了firfox可以出現效果,ie無效果,firfox有httpfox,有firebug,而ie這方面差的就太遠了,這裡推薦下companion.js,這是乙個簡單實用的ie環境下的除錯工具,寫道這個人的blog寫得比較清楚了,照做就...

關於QEMU GDB除錯引導程式問題

我們除錯引導程式 通常是在0x7c00上斷下 並使用gdb檢視 但是gdb反彙編的內容是32位 不能得到正確解析。以下是解決辦法 保證qemu以qemu system i386執行 因為我測試 qemu system x86 64 並不能成功會報錯。我們也是為了除錯引導程式 所以也無傷大雅.執行qe...