自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (9)
  • 收藏
  • 关注

原创 Linux 平台驱动程序与 单片机程序 的异同

不知不觉,已经接触Linux 操作系统四年多,对于什么是Linux 下的驱动,这件事需要说明一下。1. 什么是driver 驱动首先,需要有计算机组成原理的知识,才方便了解驱动这个翻译过来的概念。以单片机为例,CPU,存储器,时钟,IO输入输出设备组成最小系统。类似的,只要将各个信号线,按照定义和CPU 连接起来,硬件上,外设就挂载到最小系统成功了。 此时,还需要软件上,让系统更准确的说让CPU 访问硬件、使用该硬件work起来。这部分的软件代码,就叫作驱动。 通常的驱动程序,就是..

2020-09-27 20:17:00 1293

翻译 五年程序员工作小结&技巧

因每样事物都具其特色,每个人都有其个性,故而每种工作都有其技巧,每件事情都有其方法。程序员的工作亦是如此,假如不能抓住事物的本质去对待问题,恐事倍功半,徒劳无功。回想起初,刚接手单片机上,简单的点亮LED 的程序时,逐句逐字阅读。乃未入门之探索也,盖不能成事。如今已工作5年有余,项目中代码的功能、模块逻辑之纷繁复杂,自思应好生整理。一则为前面5年之辛劳尝试,加以回顾总结; 二则为今后程序员的人生,继往开来。1. 师出高明程序代码,计算机系统,os 都是西洋人发明创建而来,若能直接阅读他们的文

2021-07-24 14:51:32 281 1

原创 计算机computer 的二进制世界,是如果表达英语的

背景在电子计算机的世界里面,它只能接收到两种电平信息,并人为设定:高电平: 表示二进制中的1.低电平: 表示二进制中的0.而英文的世界里,是由 26 个英文字母 + 10 个 阿拉伯数字构成。 这两套语言系统,之前存在差异。那么就需要搭建一座转义的桥梁,将 二进制码与英语直接互相转换。这就是ASCII 码的诞生。举例有一个文本文件,如下。[root@node61 test]# cat test abcdeABCDE1)它是如何存在计算机里面的呢?[root..

2021-07-14 21:27:30 855

转载 ELF文件和BIN文件 uboot.elf uboot.bin

uboot 下编译出来的文件,包括u-boot.elf & u-boot.bin。 这篇文章主要介绍两个文件的区别和用途文件的内容:1. BIN文件是 raw binary 文件,这种文件只包含机器码。2. ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。所以ELF文件的体积比对应的BIN文件要大。文件的执行:1. 执行raw binary很简单,只需要将程序加载到其起始地址,就可以执行; FILE *fp = fopen("vmlin...

2021-04-14 14:14:34 1439

原创 Android build 构建

参考blog:https://source.android.com/setup/build/building构建android 的工程源码生成镜像文件,基本步骤;1. source build/envsetup.sh 解释: 导入若干命令,比如lunch hmm 等等。2. lunch 选择目标target 解释:使用lunch选择要构建的目标; 根据选择的target 不同,export 导出不同的环境变量,也就是宏变量,影响后面make 的选择。...

2021-04-07 14:30:30 153

原创 英语语法归纳English grammar summarize

英语语法归纳 单词构成短语,短语构成句子。 在语法中,单词表现出来的是词义 + 词性;同样短语表现出来的除了意义还有充当句子成分。1. 词性 在英语语法中,一共有十种词性,归纳如下。名词 动词 形容词 连词 副词 代词 数词 冠词 介词 感叹词2. 句子成分 句子成分是一个承上启下的功能,单词组成短语,变成句子成分,句子成分按照人类习惯的语法格式组合成句子。主语 谓语 宾语 定语 状语 补语 同位语...

2021-03-13 16:47:20 275

原创 归纳编程语言的语法grammer

背景: 我是一个系统软件工程师,之前没有使用过python 语言。 但是,最近项目需要使用python 脚本实现自动化测试。于是抽空学习了解了python,同时为了更好的灵活使用编程语言的技巧和了解意图。在此归纳编程语言的语法。 找对方法,对症下药。才能药到病除。=====================================正好归纳一下编程语言的所有语法.1. 条件判断2. 赋值语句 expression3. 循环遍历 iterator4. 数据类型之间的转换 tr...

2021-03-04 10:41:33 942 2

原创 Makefile 的解读(一)

目录1.背景2. 主Makefile 的解读Makefile 的rule如下3.Makefile 包含的五元素4. 正式解读Makefile1.背景 Linux 开发过程中,日常的工作闭环:修改、编译、调试; 一顿分析后,修改、编译、调试。还有问题;修改、编译、调试; 直到有满意的结果,才会跳出这个闭环。修改: 对源码的理解 == 换言之,C/C++ 语法&数据结构的理解、硬件工作原理或实现需求的算法理解。调试:Linux 下各种调试手段...

2021-01-21 21:09:36 350

原创 什么才是正义(二)

有段时间,每晚都听曾师剖析的《张良的人生智慧》,我意识到自己的轻慢和无知。 张良,初汉三杰.也是唯一能够身职高位,又能全身而退的。另外二杰最后都被刘邦除掉了. 汉高祖刘邦在洛阳南宫评价他说:“夫运筹策帷帐之中,决胜于千里之外,吾不如子房。 -->学问深处意气平 -->作学问之目的,其实是为自己。 -...

2020-12-04 11:03:54 182

原创 什么才是正义(一)

什么才是正义这个话题,曾经被我熟虑过,后来又被我抛弃过。在少年时代,几乎男孩儿们都有一个英雄梦。不管是西方的左轮游侠佐罗,东方中国风的武侠,古典文学中抗争到底的孙悟空,梦幻作品中的奥特曼。满腔无畏的热血,总能被正义的风尚感染的激情澎湃。 那个时候,只知道惩恶扬善的痛快,而不曾经历人生中的无奈。 当天真遇上了现实,浪漫遇见平淡。你是否还坚持以往的正义? 真实的人生,不是由无数高光的闪光点汇聚而成,更多的是茶米油盐的俗世生活。没有那么多的喝彩,也没有那么多的意外。而是无数次简单的重复...

2020-12-04 11:03:15 261 1

原创 庸医与庸人

新入职公司需要做体检,找到附件的浙江省人民医院的分院,号称为三级甲等。慕名而来,扫兴而回。一进门,首先保安就冷漠傲慢,口齿不清,搞半天才明白进入要先填表格。如此简单之事,亦需费如此大力气。世人皆不知简化,又喜贪功,为凸显自身的价值所在,故意令自己和与自己相关的事情复杂、混乱。以便浑水摸鱼,糊弄群众。从而"敲竹杠"的方式来获取利益。 以繁忙自身为借口,"心安理得"的享受强取过来的"利益"。 如有不得,又会记恨挂怀。 像厕中的苍蝇,只能生活在无休止的"贪婪"和"嫉妒"之...

2020-12-04 10:59:55 178 1

原创 避免死锁

内核规定,代码里面按照顺序请求信号量。物有先后,事有始终。如果交错就很可能出现,打死结——死锁的情况

2020-12-03 17:12:37 108

转载 Linux字符设备中的两个重要结构体(file、inode)

对于Linux系统中,一般字符设备和驱动之间的函数调用关系如下图所示上图描述了用户空间应用程序通过系统调用来调用程序的过程。一般而言在驱动程序的设计中,会关系 struct file 和 struct inode 这两个结构体。用户空间使用open()系统调用函数打开一个字符设备时(intfd = open("dev/demo", O_RDWR))大致有以下过程:在虚拟文件系统VFS中的查找对应与字符设备对应struct inode节点 遍历字符设备列表(chardevs数组),根...

2020-11-20 18:00:17 542

原创 2020-11-04

#include <linux/init.h>#include <linux/module.h>#include <linux/cdev.h>#include <linux/types.h>#include <linux/err.h>#include <linux/errno.h>#include <linux/fs.h>#include <linux/proc_fs.h>#include &lt

2020-11-04 17:57:09 170

原创 介词 + 宾语构成介宾,在句中作状语,表语,补语或宾语

grammer 其实就是英语在表述中遵循的一种逻辑性的游戏规则;进而让听者知道说者的用义,最终的目的不是什么丰富而眩目的各种词性、句式,而是用义。1. 举例来看一个长句,介词+宾语作补语的例子:Posted transactions are optimized for best performance in completing the transaction at the expense of the requester not having knowledge of successful r

2020-10-22 10:58:06 3989

原创 uboot 下spinand 驱动移植 ———1.驱动接口的添加到uboot中

前面有篇文章谈到:https://blog.csdn.net/clam_zxf/article/details/108834541平台驱动和单片机驱动异同,同样可以将uboot 除去它的引导加载;所谓启动,就是从这些外部介质中搬移一段固定的大小的代码到内部RAM中运行。还可以当做一种单片机程序,在固定的接口去添加 驱动程序的主函数,就可以完成驱动的添加。1. uboot 下添加对应的controller 驱动在uboot下,有个全局变量init_sequence_r[] 的结构体,其中可以自定义

2020-09-28 19:17:29 1986

原创 ipcm 核间通信 ---第2篇

三次握手建立连接源码路径:https://github.com/zhu-clam/LDD-iic_slave/upload/master/codec-ipc/ipcm_ck860

2020-09-27 10:37:33 655

原创 ipcm 核间通信相关 ---(1)

ipcm 全称: internal processor communcation message翻译为: 在多核间使用消息通信,其工作原理是通过mmap()或ioremap() 实现一段共享内存,使用该共享内存,就可以实现信号数据的交互。IPCM driver层:实现如下功能,一步一步如下。共享内存的映射,当两个cpu都映射则共享内存建立完成。 保存对端cpu的状态,g_ipcm_nodes[target].state = alive 进行发送握手。握手成功后,创建handle。..

2020-09-27 10:20:25 3411

原创 Macronix nand 驱动移植总结

书到用时方恨少,事不经过不知难。前因篇——为什么需要移植最近在移植macronix 旺宏电子的nand flash 芯片。之前的思路是使用GagiDevice 的驱动修修改改,经过测试,证明是行不通的。 因为两者的nand flash 的architecture 不同,有die、plane 等的不一致,故而不能直接使用。 头疼几日后,依赖于互联网,登录到macron 的官网去看看。https://www.macronix.com/en-us/support/technical...

2020-09-08 14:44:08 3421

原创 内核DEFINE_IDA 的用意purpose

在此介绍DEFINE_IDA 的用法,会step1.static DEFINE_IDA(pci_endpoint_test_ida); 静态注册pci_endpoint_test_idastep2. int id;id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL);应用场景: 在想多次获取累加的数字时,id alloctor 可以用来产生这样的数字。比如,我们用的pci 驱动,底下用12个pc...

2020-06-02 17:47:04 1477

转载 程序员有话说 | 我成了敲代码的“佛教徒”

https://blog.csdn.net/csdnsevenn/article/details/86698006同事之间很少能交真朋友,程序员之间尤其如此。大家每天Bug相见,一句“烂代码”就可能让对方把你从朋友的列表中划去。除非你能力强,够佛系。大雄就是这么一个程序员。大雄福建人。刚毕业时,为追一个女孩,远赴合肥。可惜失而不得,丢魂落魄来到附近的城市南京,在身无分文...

2019-07-25 09:02:05 212

转载 14.linux-platform机制实现驱动层分离(详解)

转载自:https://www.cnblogs.com/lifexy/p/7569371.html本节目标:学习platform机制,如何实现驱动层分离1.先来看看我们之前分析输入子系统的分层概念,如下图所示:如上图所示,分层就是将一个复杂的工作分成了4层, 分而做之,降低难度,每一层专注于自己的事情, 系统只将其中的核心层和事件处理层写好了,所以...

2019-06-25 11:33:56 260

转载 【转载】跟我一起写 Makefile(一)

本文转载自:https://blog.csdn.net/haoel/article/details/2886工欲善其事,必先利其器.首页 博客 学院 下载 图文课 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye GitChat 写博客 小程序 消息 一个很好的makefile例子 05-07...

2019-05-20 17:25:16 1001

翻译 [转]linux中的tasklet机制

https://blog.csdn.net/yasin_lee/article/details/12999099LINUX 为了中断既能保持快速响应,又能保证中断处理函数的执行。将响应的部分放在上半部top half,将中断处理的部分,放在底半部,bottom half。从而实现某种平衡—— 中庸。这里介绍LINUX 底半部的一种tasklet机制使用#include <li...

2019-04-14 16:51:39 174

原创 Linux 字符设备驱动cdev

关键字:字符设备文件创建——device_create、字符设备cdev 与设备号dev_t的联系 、sys/class 目录下创建类目录class_createLinux下面一切皆是文件,这句是有来源的,这个来源起因,应该就是VFS 虚拟文件系统,将soc下面的所有外设,都抽象成一个个文件进行管理。外设驱动,又有字符设备驱动、块设备驱动。根据IO 读写设备是一个字节来读写,还是根据一块...

2019-03-23 17:46:32 514

转载 [转载]文件系统& 挂载

https://blog.csdn.net/jackyu651/article/details/53070607/挂载-mount什么是挂载?挂载到目标文件系统有什么好处?思考这个问题,发现,为了将两个不同磁盘中的数据或文件,拷贝到另外一个磁盘当中时,就需要使用到mount命令。例如当前CPU或者说操作系统下面有一个存储设备,比如这个存储设备是SD卡的话。我们如何直接访问该存储设备...

2019-03-16 21:22:59 159

转载 System V IPC概述[转载]

转载:https://blog.csdn.net/qq_38211852/article/details/804758181.System  V引入了三种高级进程间的通信机制:消息队列、共享内寸和信号量   IPC对象(消息队列、共享内存和信号量)存在于内核中而不是文件系统中,由用户控制释放,不像管道的释放由内核控制   IPC对象通过其标识符来引用和访问,所有IPC对象在内核空间有唯...

2019-02-22 10:51:37 135

转载 中断屏蔽mask interrupt

不得不说,随着技术的积累和发展,适应当今的社会,就连看似很基础,很简单的中断,也开始变幻莫测了。如果以前只懂得正常normal的中断注册、中断响应、中断优先级。还是不太能完全推理出程序中中断上下文的执行流。而对于程序员而言,程序的执行流就是他的生命轨迹,没有清晰的程序执行流基础,其他的功能实现都无从说起。文章转载自:https://blog.csdn.net/dongyanxia100...

2019-02-19 11:31:24 12163 3

转载 LINUX对齐Align原理

在Linux内核中,经常会遇到类似于如下的代码#define __DATA_ALIGN(end, align) (((unsigned int)end+align-1)&amp;(~(align-1)))#define __MSG_ALIGNED(end)       __DATA_ALIGN(end, 0x10)光看字面意思,可以知道是字节align大小对齐的作用。原理上是怎么一回事,...

2019-02-18 14:16:40 1653

原创 LINUX(一)进程

进程是LINUX下的代码执行流。此篇文章大部分是参考《程序员的自我修养》《深入理解LINUX内核》1、线程基础除了进程process之外,线程也是一个十分重要的概念。特比是随着CPU频率增长出现停滞,向多核方向发展。多线程,作为实现软件并发执行的一个重要方法,也开始扮演越来越重要的角色。2、内核线程 &amp; 用户线程为了保护CPU 以及 底层硬件资源,将程序执行的权限划...

2019-02-18 09:44:44 208

转载 linux 之C语言结构体冒号数据类型——位域

有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表...

2019-02-17 11:46:05 443

转载 LINUX 内核之LIST_HEAD结构体(二)

 在接触linux内核源码时,常见到struct list_head 结构体变量,以及相关的内核函数,如下:list_add , list_add_tail, list_del , list_entry ,list_for_each , list_for_each_entry ...... 正好最近研究CPU 与CPU 之间IPCM 通讯,又涉及到此部分,所有转载一篇。https://blog...

2019-02-15 13:57:48 717 2

原创 Linux (一)

其实并没有想好文章的题目,暂时使用(一)来替代一下,蓄谋已久的打算写下这一系列的文章,整理学习和使用Linux OS 过程中的心得,同时,希望在回首时时,也能带回这段美好的记忆。 从头算起,接触Linux已有三年之久。虽然期间断断续续,由于工作和生活上面的原因,搞了一段时间的Andriod,但都和Linux还是有联系。不过,对于Linux 还是相当的陌生。直接去官网http://w...

2019-02-14 19:51:35 147

转载 【转】module_init机制的理解

分析的很到位,对linux内核机制其中的module 的实现很详细的剖析。值的一看我们在学习Linux驱动开发时,首先需要了解Linux的模块化机制(module),但是module并不仅仅用于支撑驱动的加载和卸载。一个最简单的模块例子如下:  // filename: HelloWorld.c   #include &lt;linux/module.h&gt; ...

2018-12-29 10:37:17 368

原创 Linux 内核spi-nor的驱动源码分析(一、底层通讯篇)续2——数据传输代码实现分析

这里,其实困扰本人很久,以往的驱动程序,代码里都可以看到直接操作寄存器,按照datasheet的说明,实现指定的时序。     但Linux 不是这样,而是模仿imilate 硬件数据传输transfer 来实现的。比较精细,下面来具体分析,SPI-Nor Flash读取寄存器的代码。另:linux 内核源码开源,可直接百度(linux 内核源码)下载获取。SPI-NOR 读取寄存器——s...

2018-12-25 20:13:51 1388

原创 Linux 内核spi-nor的驱动源码分析(一、底层通讯篇)

  首先,开头总是要说两句。驱动程序首要目的是让硬件run 起来,硬件device 现在都是封装好接口,连接上指定的总线,和主控 master 部分相连。主控master端 之所以能够 控制device,要设备明白master的意图,就需要双方都遵从统一的语言——协议。那么在硬件电路当中,交谈肯定不是用声音信号,而是用电信号。   故而:时序 = 协议 = Timing chat ,主控mas...

2018-12-25 17:26:32 2119

翻译 [翻译+ 自测]Linux内核配置Kconfig语法

对于linux下的编译系统掌握,知识点还是很多的,很容易一不小心就掉坑里,半天找不到原因,需要各位的细心和谨慎!下面三句话总结的很好,学习了。Kconfig ---&gt; (每个源码目录下)提供选项.config ---&gt; (源码顶层目录下)保存选择结果Makefile---&gt; (每个源码目录下)根据.config中的内容来告知编译系统如何编译我自己踩坑就是,新建Kc...

2018-12-17 15:51:25 300

转载 常用u-boot命令详解(全)

本文转载自:https://blog.csdn.net/ghostyu/article/details/6968681对于U-BOOT的开发很有帮助;U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-...

2018-09-13 15:10:33 10854

转载 转载:Source Insight 4.0 最简单的破解安装

https://blog.csdn.net/biubiuibiu/article/details/78044232声明:本文转载自Source Insight 4.0 最简单的破解安装目的,为大家方便下载和使用source Insight 代码查阅和编辑工具,故此转一波。By the way ,顺便一提,使用好工具往往事半功倍,Source Insight 是本人做开发以来遇到的比较强大而...

2018-08-01 15:23:17 237

原创 Linux下设备与驱动match过程

在之前的学习过程中,我们知道了Linux 设备驱动总线架构,抽象硬件上设备都是挂载在总线BUS上的,所以,定义了各种总线结构体。这里用platform_bus_type为例struct bus_type platform_bus_type = { .name = "platform", .dev_groups = platform_dev_groups, .match = platfor...

2018-06-13 11:01:27 3115

linux相关知识.rar

linux相关知识.rar

2020-12-09

bootrom移植到spl.rar

bootrom移植到spl.rar

2020-12-09

虚拟网络数据流.vsdx

虚拟网络设备tun/tap:在现在的云时代,到处都是虚拟机和容器,它们背后的网络管理都离不开虚拟网络设备,所以了解虚拟网络设备有利于我们更好的理解云时代的网络结构。从本篇开始,将介绍Linux下的虚拟网络设备。

2020-11-05

MindShare__PCI_Express_System_Architecture.pdf

认识PCIE,不能丢掉最初的PCI ,其中PCI 优点还需keep it。 PCIE 继承携带了之前的PCI 总线的优点,又发展了新开发的优点在计算机系统架构中。 当前地PCI 发送和接受 比特率是 2.5Gb/s 1.PCI Express 总线实现了 转发的技术—— PCIE 的scalable 可扩展性。 2. PCIE 串行通讯是基于 包的传输协议 —— 包的可自定义就可以满足不同的应用需求。 3. PCIE 支持热插拔 Hot Plug

2020-10-20

电学&电子学&佛学.docx

EDVAC: 第一台计算机,虽然简陋,但是麻雀虽小,五脏俱全。也是从那时起,规定出来计算机的五大部件: 输入系统、输出系统、存储器、运算器、控制器。Tips :如果哪天,为了化解某个问题,而又在此基础上添加新的的部件 component时,估计又会被世人传说为一大创举了。其实GPU 模块,和无线modem 模块就是这样的component。

2020-09-30

调试bootrom 程序;在spl 下.pptx

目的很明确:在spl 中编译bootrom,执行bootrom 的程序。 换言之,站在代码的角度上,就是让程序执行流,调用bootrom 的入口函数。 移植过程归纳; 如果是基于原有的编译系统,添加一个子模块,相当于让编译器多编译出一个目标文件。 做法是: 在相应的目录下,添加一个子目录。该子目录中包含所有的源文件和头文件。让其编译成一个目标文件,然后在主模块中链接到它。

2020-09-30

软件开发指南_v1.3.pdf

传统的工具链定义通常包括编译器、汇编器、链接器等。所有这些组建共同实现从C/C++ 源代码到可执行文件的 翻译过程,如图1.1 编译器对输入的源文件的处理流程,包括:词法分析、语法分析、语义检查、汇编代码生成

2020-09-28

uboot移植使用说明(含SPL).pdf

SPL,即Second Program Loader,是2010年之后才出现的一个模块,它是U-Boot第一阶段执行的代码,主要负责搬移U-Boot第二阶段的代码到内存中运行。SPL是由固化在内部的ROM引导的。很对芯片厂商固化的ROM支持从nandflash,SDCARD等外部介质启动。所谓启动,就是从这些外部介质中搬移一段固定的大小的代码到内部RAM中运行。这里搬移的就是SPL。当SPL本身被搬移到内部RAM中运行时,它会从nandflash,SDCARD等外部介质中搬移U-Boot第二阶段的代码到外部内存中。

2020-09-27

UEFI_Spec_2_3_1

This Unified Extensible Firmware Interface (hereafter known as UEFI) Specification describes an interface between the operating system &#40;OS&#41; and the platform firmware. UEFI was preceded by the Extensible Firmware Interface Specification 1.10 (EFI). As a result, some code and certain protocol names retain the EFI designation. Unless otherwise noted, EFI designations in this specification may be assumed to be part of UEFI.

2018-04-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除