摘要: linux内核可加载模块的makefile 在开发linux内核驱动时,免不了要接触到makefile的编写和修改,尽管网上的makefile模板一大堆,做一些简单的修改就能用到自己的项目上,但是,对于这些基础的东西,更应该做到知其然并知其所以然。 本篇文章中只讨论linux内核模块编译的makef 阅读全文
posted @ 2019-03-06 23:29 牧野星辰 阅读(32667) 评论(2) 推荐(5) 编辑
摘要: linux内核makefile概览 本博客参照内核 "官方英文文档" linux的内核makefile主要用于编译整个内核源码,按照用户的需求生成各种目标文件,对于用户来说,编译内核时非常简单的,只需要几个指令就可以做到,但是对于一个驱动开发者而言,了解内核源码的编译机制是非常必要的。 make 和 阅读全文
posted @ 2019-03-06 23:20 牧野星辰 阅读(15528) 评论(0) 推荐(5) 编辑
摘要: linux的initcall机制(针对编译进内核的驱动) initcall机制的由来 我们都知道,linux对驱动程序提供静态编译进内核和动态加载两种方式,当我们试图将一个驱动程序编译进内核时,开发者通常提供一个xxx_init()函数接口以启动这个驱动程序同时提供某些服务。 那么,根据常识来说,这 阅读全文
posted @ 2019-03-06 22:40 牧野星辰 阅读(14194) 评论(5) 推荐(13) 编辑
摘要: 设备树处理之——device_node转换成platform_device 以下讨论基于linux4.14,arm平台 platform device 设备树的产生就是为了替代driver中过多的platform_device部分的静态定义,将硬件资源抽象出来,由系统统一解析,这样就可以避免各驱动中 阅读全文
posted @ 2019-03-06 22:24 牧野星辰 阅读(10707) 评论(2) 推荐(1) 编辑
摘要: linux设备驱动程序 设备树(1) dtb转换成device_node 本设备树解析基于arm平台 从start_kernel开始 linux最底层的初始化部分在HEAD.s中,这是汇编代码,我们暂且不作过多讨论,在head.s完成部分初始化之后,就开始调用C语言函数,而被调用的第一个C语言函数就 阅读全文
posted @ 2019-03-06 19:58 牧野星辰 阅读(8639) 评论(0) 推荐(4) 编辑
摘要: linux设备树dtb格式 设备树的一般操作方式是:开发人员根据开发需求编写dts文件,然后使用dtc将dts编译成dtb文件。 dts文件是文本格式的文件,而dtb是二进制文件,在linux启动时被加载到内存中,接下来我们需要来分析设备树dtb文件的格式。 为什么要了解设备树dtb文件的格式 dt 阅读全文
posted @ 2019-03-06 19:47 牧野星辰 阅读(3447) 评论(1) 推荐(0) 编辑
摘要: linux 驱动程序中 container_of宏解析 众所周知,linux内核的主要开发语言是C,但是现在内核的框架使用了非常多的面向对象的思想,这就面临了一个用C语言来实现面向对象编程的问题,今天我们就来讲讲其中一个例子。 利用结构体中元素指针获取结构体指针 Kobject是linux设备驱动模 阅读全文
posted @ 2019-03-06 19:33 牧野星辰 阅读(2757) 评论(1) 推荐(1) 编辑
摘要: RS232、RS485和TTL 作为一个底层软件开发工程师,经常会碰到RS232、RS485和TTL这一类的问题。 之前总是碰到问题之后Google一下,把当下的问题解决了之后就不管了,过个一两天就忘得一干二净,结果后续每次都会碰到类似的问题,都是从零开始地去解决,这种方式看起来当时快速解决了问题, 阅读全文
posted @ 2019-03-06 15:25 牧野星辰 阅读(15491) 评论(0) 推荐(1) 编辑
摘要: python函数调用时参数传递方式 C/C++参数传递方式 对于C程序员来说,我们都知道C在函数调用时,采用的是值传递,即形参和实参分配不同的内存地址,在调用时将实参的值传给实参,在这种情况下,在函数内修改形参并不会影响到实参,但是这样带来一个问题,如果我们需要刻意地对实参进行修改,就不得不传递实参 阅读全文
posted @ 2019-03-06 14:54 牧野星辰 阅读(43892) 评论(2) 推荐(6) 编辑
摘要: python变量的内存机制 作为一门简单易用的语言,且配备海量的库,python可谓是程序员手中的掌中宝,编程本身就是一种将人类思维转化为计算机思维的技术,如果不需要去追求极致的运行效率同时又不限制于计算机内存空间,python无疑是目前最方便的语言了。 作为一个合格的程序员,自然是要知其然并知其所 阅读全文
posted @ 2019-03-06 14:19 牧野星辰 阅读(6797) 评论(0) 推荐(4) 编辑
摘要: 不同语言的负数取余问题 问题的出现 偶然在leetcode上看到一道这样的题: Given a 32 bit signed integer, reverse digits of an integer. 翻译成中文就是: 给定一个32位有符号整数,将整数由低位到高位反向输出,例: 输入:1230 返回 阅读全文
posted @ 2019-03-06 13:45 牧野星辰 阅读(1661) 评论(0) 推荐(0) 编辑
摘要: 浅谈操作系统与内存 对于计算机的发明,相信大家都有耳闻那个占地面积按平米算的第一台计算机。在那个时候,CPU的资源是极其珍贵的,随着这些年突飞猛进的发展,一片指甲盖大小的民用级CPU一秒钟能执行的指令数可以达到上亿级别。 随着计算能力的增长,芯片外围的硬件和配套的软件也是一路高歌,发生了天翻地覆的变 阅读全文
posted @ 2019-03-06 12:14 牧野星辰 阅读(2920) 评论(2) 推荐(3) 编辑