Android/Linux驱动开发:使用dev_dbg进行设备驱动调试

372 篇文章 ¥29.90 ¥99.00
本文介绍了在Android和Linux系统中如何利用dev_dbg宏和debugfs进行设备驱动调试。内容包括引入必要头文件、初始化调试、实现文件操作函数以及编译和加载驱动的步骤。通过创建debugfs节点并在用户空间调用相关文件操作函数,实现设备驱动的调试功能。

在Android和Linux系统中,设备驱动开发是一项重要而复杂的任务。调试设备驱动是确保其正确运行的关键步骤之一。在本文中,我们将介绍如何使用dev_dbg宏和相关的函数来进行设备驱动调试。我们还将提供一些示例代码来帮助您更好地理解。

  1. 引入必要的头文件
    首先,我们需要引入一些必要的头文件,以便在驱动程序中使用dev_dbg宏和相关的函数。请确保在源代码的开头添加以下头文件:
#include <linux/module.h>
#include <linux/kernel.h>
#include 
4.271867] .(1)[7:kworker/u16:0][ST MSG] Sitronix TDDI Touch Driver v43.00.250117 [ 4.272712] .(6)[1:swapper/0]use default pe40_max_ibus:3000 [ 4.273693] .(1)[7:kworker/u16:0][ST MSG] i2c addr: 0x55 [ 4.274480] .(6)[1:swapper/0]use default CHG2_EFF:90 [ 4.275652] .(1)[7:kworker/u16:0][ST MSG] sitronix_ts_i2c_parse_dt: Interrupt GPIO = 214. (flag=0) , request ret = 0 [ 4.276373] .(6)[1:swapper/0]use default MAX_CHARGING_TIME:43200 [ 4.277358] .(1)[7:kworker/u16:0][ST MSG] sitronix_ts_i2c_parse_dt: Reset GPIO = 215. (flag=0), request ret = 0 [ 4.278080] .(6)[1:swapper/0]use default BC12_CHARGER:0 [ 4.278794] .(1)[7:kworker/u16:0][ST MSG] sitronix_ts_i2c_parse_dt: irq_gpio = 214, rst_gpio = 215 [ 4.279466] .(5)[1:swapper/0]use default sc_battery_size:3000 [ 4.281424] .(1)[7:kworker/u16:0][ST MSG] sitronix_ts_probe:818 [ 4.281587] .(5)[1:swapper/0]use default sc_cv_time:3600 [ 4.282898] .(1)[7:kworker/u16:0][ST MSG] start of sitronix_ts_probe [ 4.283585] .(5)[1:swapper/0]use default sc_current_limit:2000 [ 4.284214] -(2)[0:swapper/2][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=172 [ 4.284217] -(2)[0:swapper/2][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.284745] .(1)[7:kworker/u16:0][ST MSG] sitronix_ts_reset_device: Hardware Reset device. [ 4.285491] .(5)[1:swapper/0]algorithm name:SwitchCharging [ 4.285523] .(5)[1:swapper/0]mtk_charger_start_timer: alarm timer start:0, 14 242917768 [ 4.293167] -(5)[1:swapper/0]alarmtimer_enqueue, 14242917768 [ 4.294033] .(6)[1:swapper/0]*** Error : can't find PD adapter *** [ 4.294896] .(6)[1:swapper/0]mtk_charger_get_atm_mode: atm_enabled = 0 [ 4.295764] .(6)[1:swapper/0]sc_netlink_kernel_create success id:28 [ 4.296584] .(6)[1:swapper/0]sc_init: en:0 time:0,80000 tsoc:80 3000 3600 2000 [ 4.297551] .(6)[1:swapper/0]BOOTPROF: 4297.549470:probe: probe=platform_drv_probe drv=charger(0xffffff96bd5a0290) 35.150461ms [ 4.299284] .(6)[1:swapper/0]BOOTPROF: 4299.281778:initcall: mtk_charger_init 37.320923ms [ 4.299594] -(4)[292:dc_trim_thread][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=173 [ 4.300674] .(6)[1:swapper/0]cfg80211: Loading compiled-in X.509 certificates for regulatory database [ 4.301444] -(4)[292:dc_trim_thread][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.303684] .(5)[1:swapper/0]cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7' [ 4.304732] .(5)[1:swapper/0]clk: Not disabling unused clocks [ 4.305514] .(5)[1:swapper/0][SWPM] phy_addr = 0x9cef3b00, virt_addr=0xffffff8008b03b00, size = 3072 [ 4.306091] .(2)[319:charger_thread]vbat_out_old=36410, vthr=682, T_curr=415, vbat_out=36447 [ 4.306722] .(6)[1:swapper/0][SWPM] copy pwr data (size: aphy/dram = 672/84) done! [ 4.306757] .(5)[125:kworker/5:1]platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 [ 4.306760] .(5)[125:kworker/5:1]cfg80211: failed to load regulatory.db [ 4.308412] .(2)[319:charger_thread][CH3_DBG] bat_cur = -5226 [ 4.309125] .(6)[1:swapper/0]helio-dvfsrc 10012000.dvfsrc_top: Linked as a consumer to regulator.2 [ 4.310829] .(2)[319:charger_thread]mtk_bif_is_hw_exist: do not have bif driver [ 4.311610] .(6)[1:swapper/0]ALSA device list: [ 4.311759] .(2)[319:charger_thread][force_get_tbat] ntc_disable_nafg -40 25 [ 4.312904] .(6)[1:swapper/0] #0: mt-snd-card [ 4.313864] .(2)[319:charger_thread]Vbat=3645,Ibat=-4028,I=0,VChr=4494,T=25,Soc=-1:-1,CT:0:0 hv:1 pd:0:0 [ 4.314981] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=174 [ 4.315391] -(2)[319:charger_thread]CPU: 2 PID: 319 Comm: charger_thread Tainted: G W 4.19.191-svn1452 #1 [ 4.315964] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.317186] -(2)[319:charger_thread]Hardware name: MT8788 (DT) [ 4.321121] -(2)[319:charger_thread]Call trace: [ 4.321137] -(2)[319:charger_thread] dump_backtrace+0x0/0x164 [ 4.321146] -(2)[319:charger_thread] show_stack+0x20/0x2c [ 4.323223] -(2)[319:charger_thread] dump_stack+0xb8/0xf0 [ 4.324654] -(2)[319:charger_thread] charger_routine_thread+0x1a0/0xa48 [ 4.325527] -(2)[319:charger_thread] kthread+0x13c/0x14c [ 4.326238] -(2)[319:charger_thread] ret_from_fork+0x10/0x18 [ 4.326837] .(5)[1:swapper/0]Freeing unused kernel memory: 1728K [ 4.327215] .(2)[319:charger_thread][CH3_DBG] bat_cur = -3584 [ 4.327821] .(5)[1:swapper/0]BOOTPROF: 4327.818470:Kernel_init_done [ 4.329411] .(5)[1:swapper/0]Run /init as init process [ 4.329633] .(2)[319:charger_thread][force_get_tbat] ntc_disable_nafg -40 25 [ 4.330361] -(3)[0:swapper/3][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=175 [ 4.331961] -(3)[0:swapper/3][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.333708] .(2)[319:charger_thread]vbat_out_old=36390, vthr=681, T_curr=421, vbat_out=36428 [ 4.345737] -(5)[0:swapper/5][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=176 [ 4.346679] -(5)[0:swapper/5][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.361126] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=177 [ 4.362078] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.365048] .(6)[1:init]init 3: init first stage started! [ 4.365822] .(6)[1:init]init 3: Unable to open /lib/modules, skipping module loading. [ 4.367035] .(6)[1:init]init 3: Copied ramdisk prop to /second_stage_resources/system/etc/ramdisk/build.prop [ 4.368461] .(6)[1:init]init 3: Switching root to '/first_stage_ramdisk' [ 4.369638] .(6)[1:init]init 3: [libfs_mgr]ReadFstabFromDt(): failed to read fstab from dt [ 4.371835] .(6)[1:init]init 3: Using Android DT directory /proc/device-tree/firmware/android/ [ 4.375621] .(6)[1:init]zwj get_battery_status 374 status = 2 [ 4.376506] -(6)[1:init][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=178 [ 4.377391] -(6)[1:init][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.391877] -(7)[0:swapper/7][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=179 [ 4.392819] -(7)[0:swapper/7][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.403592] .(1)[7:kworker/u16:0][ST MSG] IC Chip ID = 0x85 [ 4.405262] .(1)[7:kworker/u16:0][ST MSG] IC SFR VER = 0x46 [ 4.406006] .(1)[7:kworker/u16:0][ST MSG] sitronix_ts_reset_device: Hardware Reset device. [ 4.407255] -(5)[0:swapper/5][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=180 [ 4.408196] -(5)[0:swapper/5][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.411422] .(6)[1:init]power_supply sy6982e: driver reporting unsupported connected type [ 4.412484] .(6)[1:init]synth uevent: /devices/platform/odm/odm:sy6892e/power_supply/sy6982e: failed to send uevent [ 4.412488] .(6)[1:init]power_supply sy6982e: uevent: failed to send synthetic uevent [ 4.422636] -(5)[0:swapper/5][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=181 [ 4.423576] -(5)[0:swapper/5][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.426160] .(5)[1:init]init 3: [libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/by-name/md_udc [ 4.428247] .(5)[1:init]EXT4-fs (mmcblk0p7): Ignoring removed nomblk_io_submit option [ 4.432276] .(5)[1:init]EXT4-fs (mmcblk0p7): mounted filesystem with ordered data mode. Opts: errors=remount-ro,nomblk_io_submit [ 4.433853] .(5)[1:init]init 3: [libfs_mgr]check_fs(): mount(/dev/block/by-name/md_udc,/metadata,ext4)=0: Success [ 4.438022] -(3)[0:swapper/3][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=182 [ 4.438973] -(3)[0:swapper/3][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.453406] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=183 [ 4.454356] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.456387] .(4)[1:init]init 3: [libfs_mgr]check_fs(): unmount(/metadata) succeeded [ 4.457539] .(4)[1:init]init 6: [libfs_mgr]Running /system/bin/e2fsck on /dev/block/mmcblk0p7 [ 4.459268] .(4)[1:init]logwrapper 6: Cannot log to file /dev/fscklogs/log [ 4.460180] .(4)[1:init]logwrapper 6: [ 4.460813] .(4)[1:init]e2fsck: e2fsck 1.45.4 (23-Sep-2019) [ 4.462449] .(4)[1:init]e2fsck: /dev/block/by-name/md_udc: clean, 34/5792 files, 1783/5786 blocks [ 4.467588] .(4)[1:init]EXT4-fs (mmcblk0p7): mounted filesystem with ordered data mode. Opts: discard [ 4.468774] -(7)[0:swapper/7][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=184 [ 4.468891] .(4)[1:init]init 6: [libfs_mgr]__mount(source=/dev/block/by-name/md_udc,target=/metadata,type=ext4)=0: Success [ 4.469717] -(7)[0:swapper/7][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.472662] .(4)[1:init]init 6: Failed to copy /avb into /metadata/gsi/dsu/avb/: No such file or directory [ 4.475713] .(4)[1:init]init 6: [libfs_mgr]Created logical partition product_a on device /dev/block/dm-0 [ 4.476956] .(4)[1:init]init 6: [libfs_mgr]Skipping zero-length logical partition: product_b [ 4.478529] .(4)[1:init]init 6: [libfs_mgr]Created logical partition system_a on device /dev/block/dm-1 [ 4.480210] .(4)[1:init]init 6: [libfs_mgr]Created logical partition system_b on device /dev/block/dm-2 [ 4.481830] .(4)[1:init]init 9: [libfs_mgr]Created logical partition vendor_a on device /dev/block/dm-3 [ 4.483081] .(4)[1:init]init 9: [libfs_mgr]Skipping zero-length logical partition: vendor_b [ 4.484162] -(2)[0:swapper/2][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=185 [ 4.484168] -(2)[0:swapper/2][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.485182] .(4)[1:init]init 9: DSU not detected, proceeding with normal boot [ 4.492594] .(4)[1:init]init 9: [libfs_avb]Invalid hash size: [ 4.493377] .(4)[1:init]init 9: [libfs_avb]Failed to verify vbmeta digest [ 4.494277] .(4)[1:init]init 9: [libfs_avb]Returning avb_handle with status: VerificationDisabled [ 4.495468] .(4)[1:init]init 9: Top-level vbmeta is disabled, skip Hashtree setup for /system [ 4.497079] .(4)[1:init]init 9: [libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/dm-1 [ 4.499543] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=186 [ 4.500107] .(4)[1:init]EXT4-fs (dm-1): mounted filesystem without journal. Opts: [ 4.500493] -(1)[0:swapper/1][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.501512] .(4)[1:init]init 9: [libfs_mgr]__mount(source=/dev/block/dm-1,target=/system,type=ext4)=0: Success [ 4.503839] .(4)[1:init]init 6: Switching root to '/system' [ 4.509219] .(4)[1:init]init 6: [libfs_avb]AVB HASHTREE disabled on: /vendor [ 4.510594] .(4)[1:init]init 6: [libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/dm-3 [ 4.513648] .(4)[1:init]EXT4-fs (dm-3): mounted filesystem without journal. Opts: [ 4.514681] .(4)[1:init]init 6: [libfs_mgr]__mount(source=/dev/block/dm-3,target=/vendor,type=ext4)=0: Success [ 4.514920] -(2)[0:swapper/2][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=187 [ 4.516417] .(4)[1:init]init 6: [libfs_avb]AVB HASHTREE disabled on: /product [ 4.516914] -(2)[0:swapper/2][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.518141] .(4)[1:init]init 6: [libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/dm-0 [ 4.521237] .(4)[1:init]EXT4-fs (dm-0): mounted filesystem without journal. Opts: [ 4.522253] .(4)[1:init]init 6: [libfs_mgr]__mount(source=/dev/block/dm-0,target=/product,type=ext4)=0: Success [ 4.527011] .(1)[7:kworker/u16:0][ST MSG] buf = 0, 0, 0, 0, 2, D0, 6, 4C [ 4.527893] .(1)[7:kworker/u16:0][ST MSG] Status register = 0. [ 4.528855] .(1)[7:kworker/u16:0][ST MSG] FW Version (hex) = 1 [ 4.529904] .(1)[7:kworker/u16:0][ST MSG] FW revision (hex) = 1 47 1 7 [ 4.530295] -(5)[292:dc_trim_thread][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=188 [ 4.531438] .(1)[7:kworker/u16:0][ST MSG] Customer Info (hex) = 7 5 4 7 [ 4.531782] -(5)[292:dc_trim_thread][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.533073] .(1)[7:kworker/u16:0][ST MSG] Resolution = 720 x 1612 [ 4.534541] .(1)[7:kworker/u16:0][ST MSG] Max touches = 10. [ 4.535291] .(4)[1:init]init 6: Skipped setting INIT_AVB_VERSION (not in recovery mode) [ 4.536563] .(1)[7:kworker/u16:0][ST MSG] Chip ID = 0x85. [ 4.545677] -(6)[0:swapper/6][DDP/IRQ]error:IRQ: ovl0 frame underflow! cnt=189 [ 4.546620] -(6)[0:swapper/6][DDP/IRQ]error:IRQ: ovl0 hw reset done [ 4.547846] .(1)[7:kworker/u16:0][ST MSG] X_chs = 18. [ 4.548540] .(1)[7:kworker/u16:0][ST MSG] Y_chs = 32. [ 4.549217] .(1)[7:kworker/u16:0][ST MSG] K_chs = 0. [ 4.549923] .(1)[7:kworker/u16:0][ST MSG] swk_num = 0. [ 4.550910] .(1)[7:kworker/u16:0][ST MSG] Misc. Info = 0xFF. [ 4.551869] .(1)[7:kworker/u16:0]input: sitronix_ts_i2c as /devices/platform/11007000.i2c/i2c-0/0-0055/input/input4 [ 4.553312] .(1)[7:kworker/u16:0][ST MSG] [JH]sitronix_ts_probe: irq = 302 [ 4.554459] .(1)[7:kworker/u16:0]gpio gpiochip0: (pinctrl_paris): gpiochip_lock_as_irq: tried to flag a GPIO set as output for IRQ [ 4.556005] .(1)[7:kworker/u16:0]mt6771-pinctrl 1000b000.pinctrl: unable to lock HW IRQ 150 for IRQ [ 4.557202] .(1)[7:kworker/u16:0]genirq: Failed to request resources for sitronix_ts_i2c (irq 302) on irqchip mt-eint [ 4.558736] .(1)[7:kworker/u16:0][ST ERR] sitronix_ts_probe: request_irq failed! ret=-5 [ 4.559810] .(1)[7:kworker/u16:0][ST MSG] [JH]sitronix_ts_probe: request_irq failed! ret=-5 [ 4.560919] .(1)[7:kworker/u16:0][ST MSG] sitronix_mt_stop 目前状态位gpio为输出
09-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值