linux内核
物联网开发
专注某一方面,完成困难的事
展开
-
【A113】网卡芯片Realtek RTL8201驱动调试
前言:这一篇是对自己调试的一个过程记录,代码看的算是比较熟悉了,过程中一直没调过,没后询问原厂FAE,修改了一下dts一个地址参数,就可以了,最终没有太多成就感,这个参数datasheet都没有提示。。。网卡配置1、arch/arm64/configs/meson64_smarthome_defconfigCONFIG_DWMAC_MESON=m2、/kernel/aml-4.9/drivers/amlogic/ethernet/phy/amlogic.cEXPORT_SYMBOL_GPL原创 2021-02-07 14:37:53 · 4085 阅读 · 0 评论 -
Linux kernel 动态调试
何时使用#if defined(CONFIG_DYNAMIC_DEBUG)#include <linux/dynamic_debug.h>/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */#define pr_debug(fmt, ...) \ dynamic_pr_debug(fmt, ##__VA_ARGS__)#elif defined(DEBUG)#define pr_deb原创 2021-02-02 16:26:38 · 697 阅读 · 1 评论 -
Linux内核编译默认Y,编译M报错,修改办法
有的时候进行内核编译时,默认选项是Y,选择为M就编译报错。提示一些函数没有定义,主要是因为引用了外部调用的模块,编译测试时可以调用函数EXPORT_SYMBOL_GPL()函数将变量或者函数导出到外部,编译就通过了。但是发现,将编译选项设为Y时,保持修改的代码,又会报错,提示重复定义。一般编译模块是为了调试,所以暂时就调试时编译为M形式,正式时便以为Y,放弃修改就好了,具有有啥好办法,还希望不吝赐教。先这么做吧!...原创 2021-01-22 17:55:10 · 913 阅读 · 0 评论 -
Makefile -C 和M选项
下面这段代码摘自奔跑吧LinuxBASEINCLUDE ?= /home/ben/work/runninglinuxkernel_4.0#BASEINCLUDE ?= /lib/modules/`uname -r`/buildmydemo_misc-objs := mydemodrv_misc.o obj-m := mydemo_misc.oall : $(MAKE) -C $(BASEINCLUDE) M=$(PWD) modules;clean: $(MAKE) -C $(B原创 2020-10-15 11:56:47 · 726 阅读 · 0 评论 -
Linux内核第一宏
作者简介:贺东升,西安邮电大学2019级陈莉君教授研究生,初学内核的小白,热爱Linux内核,正在努力学习内核。内核第一宏list_entry()有着内核第一宏的美称,它被设计用来通过结构体成员的指针来返回结构体的指针。现在就让我们通过一步步的分析,来揭开它的神秘面纱,感受内核第一宏设计的精妙之处。整理分析的思路list_entry()在内核源代码/include/linux目录下的list.h中被定义,如下:在list_entry的定义中,我们看到出现了另外一个宏container_of。而转载 2020-10-12 15:35:11 · 173 阅读 · 1 评论