自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 4.2 uboot启动第二阶段

console的初始化分成两个阶段,console_init_f是第一阶段初始化,console_init_r是第二阶段初始化,这里是进行第一阶段初始化,第一阶段初始化实际没进行太多的操作,只是进行了gd的赋值。uboot支持多种启动介质,从哪种介质启动,uboot就需要对应的介质中去环境变量,不同的介质有对应的env_init。(2)init_fnc_ptr是一个二重指针,用于指向init_fnc_t类型的函数指针数组。

2025-03-22 15:49:33 661

原创 4.1 uboot启动第一阶段

Bootloader是启动计算机或嵌入式系统时执行的第一个程序,它主要负责初始化系统硬件,加载操作系统。SD卡/Nand等方式启动需要16字节的校验头,USB启动就不需要16字节的校验头,这里是先留出16字节的大小,用于后面计算校验时填充。(1)检查复位状态,cpu有多种复位状态,如冷上电、热启动、睡眠,冷上电时需要重新初始化DDR。(6)判断代码运行位置,如果运行在RAM中,就不需要进行重定位。(2)IO状态恢复:恢复睡眠前IO的值。(4)SRAM和SROM初始化。(7)初始化系统时钟。

2025-03-10 20:20:08 372

原创 3.1 ARM体系结构

指令的后缀(1)S:表示可选后缀,若指定S,则根据指令执行的结果更新CPSR中的条件码,会影响ARM程序状态寄存器的条件码标志(N,Z,C,V)。N:运算结果的最高位反映在该标志位,对于有符号二进制补码,结果为负数时N=1,结果为正数时N=0。Z:指令结果为0时Z=1(表示结果相等),反之则Z=0。C:当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0;当进行减法运算(包括CMP指令),并且最高位产生借位时C=0,否则C=1;

2025-03-04 20:49:53 757

原创 2.1 ARM指令集

精简指令集的最大特点是所有指令占用相同的存储空间。ARM处理器支持ARM和Thumb两种指令集;ARM指令集工作在32位模式下,指令长度都是32b;Thumb指令集工作在16位模式下,指令长度都是16b。ARM指令集按照功能可以分为算术运算指令、逻辑运算指令、分支指令、软件中断指令和程序数据指令等。

2025-02-25 21:24:35 361

原创 1.1 计算机组成原理

它的工作原理是把计算机工作的指令存储在存储器种,工作的流程是从存储器取出指令,由运算器运算指令,控制器负责处理输入输出设备。典型的五级流水线包括:取指(IF)、译码(ID)、执行(EX)、访存(MEM)、写回(WB)。存储系统采用了由快到慢,由小到大的多层次存储结构:CPU寄存器(Registers)> 高速缓存(Cache,分多级)> 主存(RAM,随机存取存储器)> 外部存储(Secondary Storage)指令集:CPU内部是通过指令工作的,每种CPU都有都有专门的一组指令,成为指令集。

2025-02-23 13:24:17 378

原创 基于STM32F407ZG的FreeRTOS移植

将configUSE_IDLE_HOOK,configUSE_TICK_HOOK,configCHECK_FOR_STACK_OVERFLOW,configUSE_MALLOC_FAILED_HOOK改成0.(1)stm32f4xx_it.c中注释void SVC_Handler(void),void PendSV_Handler(void)函数。(1)在工程中添加FreeRTOS文件夹下的内容,port.c和portasm.s是port文件夹中的,MemMang中只需要heap.c。

2024-07-05 23:24:09 506

原创 了解ROM和RAM

(2)Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,它可以用于存储Bootloader和操作系统以及程序代码,应用程序可以直接在闪存中运行。(1)它结合了ROM和RAM的优点,具有电子可擦除、可编程(EEPROM)的性能,Flash不仅掉电不会丢失数据,还具有快速读取数据的优点。(6)读写和擦除速度:NOR Flash的读写速度比NAND块,NAND Flash的写入和擦除速度比NOR Flash快。(5)NOR Flash:可以直接运行装载在NOR Flash中的程序。

2024-07-01 13:48:37 269

原创 1.5 驱动设备类文件创建

(3)在加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sys下寻找对应的类从而创建设备节点。(1)内核通过class_create(…)函数,创建一个类,这个类存放于/sys中。(2)device_create(…)函数来在/dev目录下创建相应的设备节点。

2024-04-20 15:09:57 318

原创 1.4 简单的LED驱动

静态映射:内核移植时直接使用编码的方式,如果需要修改地址映射则要修改内核源代码,还要重新编译内核。驱动操作硬件时需要用到硬件物理地址在内核虚拟地址空间相对应的虚拟地址。动态映射:驱动根据需要动态建立映射。

2024-04-14 12:15:42 290

原创 1.3 字符设备驱动

向内核注册字符设备,也就是在内核中登记,让内核中分配一个设备号,标识该驱动。mknod /dev/xxx c 主设备号 次设备号。

2024-04-13 13:08:44 231

原创 1.2 简单的驱动源码分析

2、printk打印级别。

2024-04-11 20:57:55 180 2

原创 Linux搭建TFTP服务器

(2)tftp服务器(tftpd-hpa)和客户端(tftp-hpa)安装。(1)网络守护进程程序安装。

2023-12-24 09:25:19 2023

原创 1 .1 Linux驱动初了解

:又称单内核,就是将各个模块整合在一起,例如:进程管理、线程管理、内存管理等等都运行在内核态,并同时运行在一个单独的地址空间。(1)网络设备面向数据包的发送而设计,它并不对应于文件系统的节点。(1)应用程序与驱动程序之间的数据交互是以块(固定大小的字节)为单位的,主要针对的是存储设备,如:硬盘、U盘、eMMC、SD卡等。(1)应用程序与驱动程序之间的数据交互是以字符(字节)为单位的,如:LCD、串口、LED。):操作系统模块化,只有一个核心模块(微内核)运行在内核态,其它模块作为普通进程运行。

2023-07-22 11:52:18 201

原创 7 进程控制

如果一个子进程已经终止,是一个僵死进程,则 wait立即返回并取得该子进程的状态,否 则wait使其调用者阻塞直到一个子进程终止。一个现存进程调用fork函数是UNIX内核创建一个新进程的唯一方法 (这并不适用于前节提及的交换进程、init进程和页精灵进程。vfork与fork一样都创建一个子进程, 但是它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec (或exit ),于是也就不会存访该地址空间。两次返回的区别是子进程的返回值是 0,而父进程的返回值则是新子进程的进程 ID。

2023-07-14 17:17:09 356

原创 6 进程的环境

如果 ( a )若调用这些函数时不带终止状态,或 ( b ) main执行了一个无返回值的return语句,或( c ) main执行隐式返回,则该进程的终止状态是末定义的。exit和_exit函数用于正常终止一个程序: _exit立即进入内核,exit则先执行一些清除处理 (包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核。其中,atexit的参数是一个函数地址,当调用此函数时无需向它传送任何参数,也不期望它返回一个值。下图中显示了一个C程序是如何起动的,以及它终止的各种方式。

2023-05-11 10:30:34 934

原创 5 系统数据文件和信息

例如, BSD网络软件有一个记录各网络服务器所提供的服务的数据文件 (/etc/services ),有一个记录协议信息的数据文件(/etc/protocols),还有一个则是记录网络信息的数据文件(/etc/networks)。幸运的是,对于这些数据文件的界面都与上述对口令文件和组文件的相似。localtime和gmtime之间的区别是: localtime将日历时间变换成本地时间 (考虑到本地时区和夏时 制标志),而gmtime则将日历时间变换成国际标准时间的年、月、日、时、分、秒、周日。

2023-05-05 10:04:30 483

原创 4 标准I/O库

(3)fdopen取一个现存的文件描述符(我们可能从open , dup , dup2 , fcntl或pipe函数得到此文 件描述符),并使一个标准的I/O流与该描述符相结合。因为这些特殊类型的文件不能用标准 I/O fopen函数打开,首先必须先调用设备专用函数以获得一个文件描述符,然后用 fdopen使一个标准I/O流与该描述符相结合。该对象通常是一个结 构,它包含了I/O库为管理该流所需要的所有信息:用于实际 I/O的文件描述符,指向流缓存的指针,缓存的长度,当前在缓存中的字符数,出错标志等等。

2023-05-04 11:17:45 627

原创 3 文件和目录

如果某个实现的处理是扩展该文件,则在以前的文件尾端和新的文件尾端之间的数据将读作0。给定一个pathname,stat函数返回一个与此命名文件有关的信息结构, fstat函数获得已在描述符filedes上打开的文件的有关信息。lstat函数类似于stat,但是当命名的文件是一个符号连接时, lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。符号连接是对一个文件的间接指针,它与上一节所述的硬连接有所不同,硬连接直接指向文件和目录的i节点。此字段只对普通文件、目录文件和符号连接有意义。

2023-05-01 17:38:53 1202

原创 2 文件IO

例如, i节点包含了文件的所有者、文件长度、文件所在的设备、指向文件在盘上所使用的实际数据块的指针等等。我们假定第一个进程使该文件在文件描述符 3上打开,而另一个进程则使此文件在文件描述符 4上打开。打开此文件的每个进程都得到一个文件表项,但对一个给定的文件只有一个 v节点表项。每个进程都有自己的文件表项的一个理由是:这种安排使每个进程都有它自己的对该文件的当前位移量。假定进程A调用了lseek,进程B也调用了lseek,这时如果有一个进程写了数据,那么文件的长度就会发生改变,就会影响另一个进程的操作。

2023-04-28 10:28:45 693

原创 1 Unix基础知识

但是对于用户而言,使用名字比使用数值方便,所以口令文件包含了登录名和用户ID之间的映射关系,而组文件则包含了组名和组ID之间的映射关系。口令文件中的登录项由7个以冒号分隔的字段组成:登录名,加密口令,数字用户ID(224),注释字段,起始目录(/home/username),以及shell程序(/bin/ksh)。目录(directory)是一个包含目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。文件属性是:文件类型,文件长度,文件所有这,文件的许可权。

2023-04-27 10:30:09 540

原创 8.5 数据结构——归并排序和基数排序

归并排序和基数排序

2022-11-26 23:01:38 420 1

原创 8.4 数据结构——选择排序

选择排序

2022-11-26 22:34:54 290

原创 8.3 数据结构——交换排序

交换排序

2022-11-26 19:22:33 503

原创 8.2 数据结构——插入排序

插入排序

2022-11-26 10:03:12 326

原创 8.1 数据结构——排序的基本概念和排序方法

排序的基本概念及方法

2022-11-26 08:31:06 295

原创 7.5 数据结构——散列表的查找

散列表查找

2022-11-24 11:30:32 945

原创 7.4 数据结构——平衡二叉树

平衡二叉树

2022-11-22 11:04:22 270

原创 7.3 数据结构——二叉排序树

二叉排序树

2022-11-20 22:28:09 4019

原创 7.2 数据结构——查找(线性表)

线性表的查找

2022-11-20 16:04:51 505

原创 7.1 数据结构——查找的基本概念

查找的基本概念

2022-11-19 11:17:14 161

原创 6.9 数据结构——关键路径

关键路径

2022-11-17 20:51:39 641

原创 6.8 数据结构——拓扑排序

拓扑排序

2022-11-15 22:36:22 715

原创 6.7 数据结构——最短路径

最短路径

2022-11-12 23:07:58 2501 2

原创 6.6 数据结构——最小生成树

最小生成树

2022-11-12 16:53:45 1216

原创 6.5 数据结构——图的遍历

图的遍历

2022-11-08 21:11:54 176

原创 6.4 数据结构——图的存储结构之十字链表及邻接多重表

图的存储结构之十字链表及邻接多重表

2022-10-30 11:17:55 699 1

原创 6.3 数据结构——图的存储结构之邻接表

图的存储结构之邻接表

2022-10-24 22:22:55 1565

原创 6.2 数据结构——图的抽象数据类型和存储结构

图的抽象数据类型定义、图的存储结构之邻接距阵

2022-10-24 21:33:43 1093

原创 6.1 数据结构——图的定义和术语

图的定义及术语

2022-10-24 19:49:10 1355

原创 5.12 数据结构——哈夫曼编码

哈夫曼编码

2022-10-23 00:56:52 1491

基于STM32F407ZG的FreeRTOS移植

FreeRTOS移植案例

2024-07-05

空空如也

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

TA关注的人

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