- 博客(17)
- 收藏
- 关注
原创 推荐一本Linux应用程序编程的经典教材
推荐一本Linux应用程序编程的经典教材,该教材就是:Linux程序设计 中文第4版。本人2年前因为时间原因,走马观花的把这本书通读了一遍。去年下半年又仔细的把此书学习了一遍,并且把随书的例子源代码在eclipse上运行了一遍。掌握本书后,Linux应用程序的编写就算基本入门了。 本人博客已经上传了此书的PDF和附带的源代码。...
2022-03-07 09:54:21 188
原创 U-Boot源码之udelay、get_ticks
在U-Boot中会有一些需要用到延时的场景,像延时输入进入uboot中,擦除Flash,从控制台读取用户输入的命令等。一、U-Boot延时函数的实现 U-Boot延时函数主要在cpu/内核框架/处理器型号/timer.c文件中实现,比如cpu/arm926ejs/mx28/timer.c。1、timer.c定义了表示当前时间的全局变量timestamp和上一次访问定时器的时间lastdec。timestamp表示自调用函数timer_init以来定时器经过的总计数值。la...
2021-03-09 10:29:50 1453
原创 U-Boot源码之console、printf等
u-boot使用printf、puts函数打印调试信息。printf、puts函数都是在console.c文件中实现的。console.c实现了控制台。 console,翻译过来的意思是控制台,其实是为内核提供打印的。console必须和一个具体的设备连接在一起。pc的终端常用的是由显示器和键盘构成,用户打印和内核打印都从这个终端反映给用户。所以,这里/dev/console是连接到/dev/tty0的。如果,我们来个专门打印内核的设备(比如通过串口),我们把那个串口注册到co...
2021-02-20 09:51:56 674
原创 U-Boot源码之NAND Flash驱动
这里以u-boot-2009.08版本介绍U-Boot的NAND Flash驱动的实现。要明白U-Boot的NAND Flash驱动的实现,首先要了解NAND Flash的基础知识。一、NAND Flash简介 关于NAND Flash的介绍,可以参看下面两篇博文: https://blog.csdn.net/shengnan_wu/article/details/8116861?utm_medium=distribute.pc_relevant_t0.no...
2021-01-22 09:57:02 1884
原创 U-Boot源码之串口驱动
一、U-Boot与Linux驱动1. uboot本身是裸机程序(1) 裸机本来是没有驱动的概念的(狭义的驱动的概念就是操作系统中用来具体操控硬件的那部分代码叫驱动)(2) 裸机程序中是直接操控硬件的,操作系统中必须通过驱动来操控硬件。这两个有什么区别?本质区别就是分层。2.uboot的虚拟地址对硬件操作的影响(1) 操作系统(指的是linux)下MMU肯定是开启的,也就是说linux驱动中肯定都使用的是虚拟地址。而纯裸机程序中根本不会开MMU,全部使用的是物理地址。这是裸机下和驱动中操.
2020-12-09 13:38:22 1497
原创 U-Boot源码之内核启动
请参看文章:https://blog.csdn.net/wangweijundeqq/article/details/81435399
2020-12-07 09:17:37 57
原创 U-Boot源码之命令
U-Boot支持很多命令,通过命令我们可以实现很多操作。这里介绍U-Boot命令的实现。一、U-Boot命令的操作1.进入命令 U-Boot 自带命令行接口,在 U-Boot 启动期间,按任意键(如空格键)可进入 U-Boot Shell 命令行,在Shell 界面可输入 U-Boot 支持的命令,使用 U-Boot 提供的各种功能:U-Boot 2009.08-dirty ( 5 月 18 2015 - 10:22:36)Freescale i.MX28 familyCP...
2020-11-20 10:51:00 385 2
原创 U-Boot源码之环境变量
U-Boot通过环境变量(env)为用户提供一定程度的可配置性,这些环境变量包括串口终端所使用的波特率(baudrate)、启动操作系统内核的参数(bootargs)、本地IP地址(ipaddr)、网卡MAC地址(ethaddr)等等。环境变量可以固化到非易失性存储介质中,使用相关命令来查看、设置及保存环境变量。一、环境变量的命令操作1.查看环境变量使用 printenv 命令即可查看 U-Boot 的所有环境变量:MX28 U-Boot > printenvbootcmd=run
2020-11-09 16:56:07 1075
原创 U-Boot源码之函数start_armboot
U-Boot启动执行完start.s文件里的reset部分代码后,程序将跳转至函数start_armboot。函数start_armboot位于lib_arm/board.c文件中。函数start_armboot是U-Boot启动的第二个阶段,它将完成U-Boot启动的所有工作并最终进入main循环。...
2020-10-14 11:04:30 235
原创 U-Boot源码之start.s
start.S 文件是U-Boot启动最先执行的代码,对start.S 文件的正确理解是整个U-Boot源码理解的开端和基础。要理解start.S 文件,需要具备一些预备知识,下面先介绍这些预备知识。一、start.S预备知识
2020-10-12 13:10:40 528
原创 U-Boot源码之概述
一、U-Boot 目录简介U-Boot 源代码结构清晰,按照 CPU 以及开发板进行安排。进入 U-Boot 源码目录,可以看到如图1的目录。 图1U-Boot 根目录内容在该目录中,重要的子目录说明如表1所列。U-Boot 重要目录说明 ...
2020-08-28 11:13:17 439
原创 Linux内核源码学习之链表
链表是Linux内核中最简单、最普通的数据结构,运用及其广泛。链表是一种存放和操作可变数量元素(常称为节点)的数据结构。链表和静态数组的不同之处在于,它所包含的元素都是动态创建并插入链表的。在编译时不必知道具体需要创建多少个元素,另外由于每个元素的创建时间都不相同,所以它们在内存中无需占用连续内存区。由于元素是不连续存放,所以各元素需要通过某种方式被连接在一起,于是每个元素都包含一个...
2019-10-11 15:35:38 429
原创 Ubuntu下将vim打造为类似VS的强大IDE(Vim+Ctags+Taglist+Cscope+OmniCppComplete+Winmanager+NERDTree+MiniBufExplor)
作为一个刚刚接触Linux不久的小白,习惯了在windows下那么多功能强大、方便易用的IDE下做开发。一进入Linux的世界下写代码,却发现Linux下竟然没有一款让人很满意的IDE,真是让人郁闷不已!也许是因为Linux奉承“简单就是美”的哲学吧。起初,用vim写代码,vim虽然功能强大,但离IDE的差距实在太大了。然后在网上发现vim可以装一些插件,可以更方便于写代码,于是就捣...
2019-10-10 11:11:22 2188
原创 Linux内核源码学习之kfifo
队列适合于生产者和消费者的编程模型中。在该模型中,生产者创造数据,消费者则读取并处理数据。Linux内核通用队列由kfifo实现。它实现在文件kernel/kfifo.c中,声明在<linux/kfifo.h>中。这里分析的是内核版本2.6.35.3的kfifo。一、kfifo原理 kfifo实现原理是采用循环(环形)队列。关于循环(环形)队列请自行百...
2019-08-09 15:19:23 1057
原创 Linux内核源码学习之typeof、offsetof和container_of宏
在学习Linux内核链表list.h时,遇见了两个很特别的宏定义,它们就是鼎鼎大名的offsetof和container_of宏。本文将分四部分介绍,第一部分介绍typeof,第二部分介绍offsetof宏,第三部分介绍container_of宏,第四部分展示这两个宏的使用代码示例。一、typeoftypeof并不是ISO/IEC 9899:1999里的,也就是...
2019-06-18 16:56:18 566
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人