自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux内核及驱动架构介绍

这部分由文件系统相关的系统调用执行,和调用进程属于同一个进程,具有调用进程的运行环境,只是由用户态变成了内核态。其次,Linux驱动架构是内核的重要组成部分,它负责实现操作系统与硬件设备之间的通信。首先,Linux内核是操作系统的核心,它负责管理系统资源,如内存、处理器、硬盘等,并为运行在系统上的应用程序提供底层支持。总的来说,Linux内核及驱动架构为Linux操作系统的稳定运行提供了坚实的基础,它们共同实现了操作系统与硬件之间的无缝连接,使得各种应用程序能够充分利用硬件资源,发挥出最佳的性能。

2024-03-16 15:11:30 209

原创 uboot介绍

3. **可移植性**:U-Boot具有高度的可移植性,在源代码级别上可以针对不同的硬件平台进行移植,使其能在不同的开发板上运行。4. **生态丰富**:拥有丰富的设备驱动源码,如以太网、SDRAM、LCD等,并且有详细的开发文档供开发者参考。5. **社区支持**:由于是开源项目,U-Boot拥有一个活跃的社区,开发者可以从社区获得帮助和资源。6. **下载渠道**:U-Boot的源码可以从官方网站或其他代码托管平台获取。1. **开放性**:U-Boot是开源软件,其源代码对所有人开放。

2024-03-16 15:07:36 128

原创 cpu架构介绍

x86架构:这是目前个人电脑和服务器广泛采用的架构,特别是以Intel和AMD的处理器为主。MIPS架构:MIPS架构也是一种采用RISC指令集的处理器架构,由MIPS科技公司开发并授权。例如,家庭使用的无线路由器如果采用MTK芯片,那么其处理器很可能是MIPS架构的。除了上述常见的CPU架构外,还有其他一些架构,如RISC-V等,每种架构都有其独特的特点和适用场景。请注意,随着技术的不断进步,新的CPU架构和处理器技术也在不断涌现,因此在选择和使用时需要关注最新的技术和市场动态。

2024-03-16 15:05:18 208

原创 bsp概述

总之,BSP的开发是一项复杂而重要的工作,它涉及到硬件和软件的多个方面,需要开发者具备丰富的经验和技能。通过深入了解硬件平台的特性和需求,以及合理使用开发工具和资源,可以有效地完成BSP的开发工作,为操作系统的稳定运行和上层应用程序的开发提供坚实的基础。此外,BSP的开发还需要参考硬件平台的文档和规范,以确保开发的正确性和可靠性。引导程序:BSP包含用于启动硬件平台的引导程序,这个程序通常存储在开发板的闪存或EEPROM中,负责初始化硬件环境,为后续的系统启动和软件加载提供基础。二、BSP的开发流程。

2024-03-16 15:03:32 1028

原创 C语言学习(七)--函数指针和回调函数

在C语言中,函数指针和回调函数是高级编程概念,它们在许多场合下都非常有用,特别是在设计灵活的API、事件处理、或者实现回调函数机制时。下面是对这两个概念的介绍和使用举例。函数指针是一个变量,它存储了函数的地址。通过函数指针,我们可以间接地调用函数。定义函数指针时,需要指定指针所指向的函数的返回类型和参数列表。定义函数指针:使用函数指针:举例:回调函数是一个通过函数指针调用的函数。它允许一个函数作为参数传递给另一个函数,并在需要的时候由后者调用。回调函数提供了一种机制,使得我们可以将一段代码的行为作为

2024-03-12 18:57:01 119

原创 C语言学习(十五)--枚举

在这个例子中,`DayOfWeek`枚举类型定义了一周中的七天,而`Color`枚举类型定义了三种颜色,每个颜色都有对应的整数值。1. 枚举类型本质上是整数类型,因此枚举变量可以参与整数运算,但不建议这样做,因为这样会降低代码的可读性和意图的明确性。3. 虽然枚举元素的默认值是从0开始递增的,但你可以为任意元素手动指定整数值,后续未指定的元素将继续从该位置开始递增。2. 不同枚举元素之间可能存在相同的整数值,但同一个枚举类型中的元素名称必须唯一。- `枚举元素`是枚举类型中定义的每个常量的名称。

2024-03-12 18:44:04 280

原创 C语言学习(十四)--指针

定义指针指针变量的定义使用c复制代码int *ptr;// 定义一个指向整数的指针变量ptr为指针赋值通常,我们将一个变量的地址赋给指针。c复制代码int x = 10;// 将变量x的地址赋给指针ptr通过指针访问值使用运算符通过指针访问其指向的值。c复制代码// 输出:Value of x: 10修改指针指向的值同样使用运算符,可以修改指针指向的值。c复制代码*ptr = 20;// 修改ptr指向的值,即变量x的值变为20// 输出:New value of x: 20。

2024-03-12 18:43:12 131

原创 c语言学习(十三)--数组

3. **访问**:通过两个索引来访问元素,`arrayName[rowIndex][columnIndex]`。3. **访问**:通过索引访问数组元素,索引从0开始到`arraySize - 1`。1. **声明**:`type arrayName[arraySize];1. **一维数组**:最简单的数组类型,用于存储一个线性序列的元素。3. **多维数组**:超过两个维度的数组,可以表示更复杂的数据结构。2. **初始化**:可以在声明时直接初始化数组,或在声明后逐个赋值。

2024-03-12 18:36:42 291

原创 c语言学习(十二)--作用域

在C语言中,作用域(Scope)指的是变量、函数或其他标识符在程序中的有效范围。作用域规则决定了在哪些位置可以访问或引用特定的标识符。C语言中有三种主要的作用域:局部作用域、全局作用域和文件作用域。

2024-03-12 18:35:44 236

原创 C语言学习(十一)--判断

注意:在`switch`语句中,每个`case`后面跟随的语句块执行完成后如果没有遇到`break`语句,则会继续执行下一个`case`的语句块,这种现象称为“穿透”(fallthrough),在多数情况下需明确使用`break`语句防止这种情况发生。在C语言中,判断是通过条件语句实现的,主要有两种形式:`if`语句和`switch`语句。`switch`语句用于多个互斥条件的选择,特别适合于基于枚举或整数值的决策分支。// 条件1和条件2都为假,条件3为真时执行的语句。printf("未知的日期。

2024-03-12 18:34:57 420

原创 c语言学习(十)--函数

在这个例子中,我们定义了一个名为`sum`的函数,它接收两个整数参数`a`和`b`,并返回它们的和。在`main`函数中,我们调用了`sum`函数,并将结果赋值给变量`result`,然后输出结果。C语言中的函数是一段具有特定功能的代码块,它可以接收输入参数并返回一个结果。1. 返回类型:指定函数返回值的类型,如int、float、char等。3. 参数列表:在括号内定义函数所需的输入参数,包括参数类型和参数名。多个参数之间用逗号分隔。// 定义一个求和函数,接收两个整数参数,返回它们的和。

2024-03-12 18:32:28 201

原创 c语言学习(九)--循环

在C语言中,循环结构允许程序重复执行一段代码,直到满足特定的条件为止。C语言提供了几种循环结构,包括for循环、while循环和do-while循环。下面我将逐一介绍这些循环结构,并给出相应的例子。

2024-03-12 18:31:44 185

原创 C语言学习(八)--运算符

C语言提供了丰富的运算符,用于执行各种算术运算、关系运算、逻辑运算、位运算以及赋值运算等。

2024-03-12 18:27:51 159

原创 C语言学习(六)--常量

C语言中的常量是指在程序运行过程中其值不会改变的量。常量可以是整数、浮点数、字符或字符串等类型。在C语言中,可以使用预处理器指令`#define`来定义常量。// 定义一个字符串常量str,值为"Hello, World!// 定义一个浮点数常量b,值为3.14。// 定义一个字符常量c,值为'A'const int a = 10;// 定义一个整数常量a,值为10。

2024-03-12 18:26:52 337

原创 C语言学习(五)--变量

在C语言中,变量是用于存储数据的标识符。每个变量都有一个特定的数据类型,用于确定它可以存储的数据的种类和范围。变量名由字母、数字和下划线组成,并且不能以数字开头。变量的声明定义了其数据类型和名称,而赋值语句则用于给变量分配一个具体的值。

2024-03-12 18:25:07 417

原创 c语言学习(一)--C语言程序结构

C语言程序结构主要由预处理指令、函数、变量、语句和表达式等组成。下面我将详细解释这些组成部分,并通过一个简单的示例程序来展示它们是如何协同工作的。

2024-03-12 18:21:46 441

原创 C语言学习(二)--基本语法

1. **变量**:在C语言中,变量是用来存储数据的容器。4. **控制结构**:C语言提供了if-else、switch-case、for、while和do-while等控制结构,用于实现条件判断和循环执行代码块。8. **结构体**:结构体是一种复合数据类型,它可以将不同类型的数据组合在一起。5. **函数**:函数是一段可重复使用的代码块,可以接受参数并返回结果。7. **指针**:指针是一种特殊的变量,它存储了另一个变量的内存地址。6. **数组**:数组是一组相同类型的元素的集合。

2024-03-12 18:16:03 469

原创 c语言学习(四)--数据结构

在C语言中,数据结构是用来组织、管理和存储数据的方式,它们可以抽象地表示数据之间的关系,并提供相应的操作方法。队列是一种先进先出(FIFO)的数据结构,两端分别为队首和队尾,通常支持enqueue(入队)和dequeue(出队)操作。以上仅是C语言实现数据结构的一些基本示例,实际应用中会根据具体需求选择合适的数据结构,并实现更复杂的操作算法。栈是一种后进先出(LIFO)的数据结构,基本操作包括压栈(push)和弹栈(pop)。// 如果图是有向的,则无需设置graph[dest][src]

2024-03-12 18:13:56 322

原创 C语言学习(三)--数据类型

在使用数据类型时,需要注意它们的取值范围、存储大小和内存布局,以确保程序的正确性和效率。同时,也要了解不同数据类型之间的转换规则,以便在需要时进行类型转换。C语言中的数据类型是编程的基础,它们决定了变量或函数可以存储的数据的种类和范围。下面详细介绍C语言中的几种主要数据类型,并给出相应的使用实例。这只是C语言中数据类型的一部分,实际上还有更多复杂的数据结构,如链表、树、图等,这些通常通过结构体和指针等基础数据类型进行构建。:用于存储内存地址。

2024-03-12 18:08:31 140

原创 bootcode中的内存映射详解

在Bootcode中,内存映射(Memory Mapping)是一个关键步骤,它涉及到将物理内存地址映射到虚拟内存地址空间,以便处理器能够访问和操作内存。这个过程在操作系统加载之前由Bootcode完成,为操作系统的运行提供一个合适的内存环境。总的来说,Bootcode中的内存映射是为了确保处理器能够正确、安全地访问内存而进行的一系列初始化和配置工作。它为操作系统的加载和运行提供了一个稳定、可靠的内存环境。

2024-03-01 17:21:40 162 1

原创 嵌入式芯片学习笔记--Bootcode

Bootcode通常是由芯片制造商或系统开发商编写的,并且是针对特定的芯片和硬件平台定制的。芯片中的Bootcode,也称为启动代码或引导代码,是一段特殊的程序代码,它在芯片上电或复位后首先被执行。Bootcode的主要目的是初始化芯片的硬件环境,为后续的操作系统或应用程序的加载和运行做好准备。:一旦完成了所有的初始化和加载任务,Bootcode会将控制权交给操作系统,让操作系统接管系统的运行。:在初始化过程中,Bootcode会检测和处理任何硬件异常或错误,确保系统的稳定性和可靠性。

2024-03-01 17:08:13 258

原创 嵌入式学习笔记--复位向量地址

当微处理器上电或由于某种原因(如异常或错误)被复位时,它会立即跳转到复位向量地址,并从该地址开始执行程序。复位向量地址通常是预先设定的,存储在微处理器的内部存储器或外部存储器中。复位向量地址是指在微处理器复位后,程序指针(通常是程序计数器PC)会被设置到的初始地址。当微处理器上电或复位时,它并不知道应该从哪里开始执行程序,因此需要一个固定的起始点,这个起始点就是复位向量地址。因此,复位向量地址是微处理器执行流程中的一个关键步骤,它确保了微处理器能够在复位后从一个可靠和可预测的状态开始执行程序。

2024-03-01 16:33:09 264

原创 嵌入式学习笔记--释放jtag复位信号

JTAG是一种通用的标准测试接口,它不仅用于硬件调试,也可以用来控制和监测芯片内部的状态,包括对处理器的复位控制。当调试过程结束或者开始执行用户程序时,就需要“释放JTAG复位”,这意味着通过JTAG工具撤销对处理器复位信号的控制,让处理器按照正常的启动流程开始执行程序代码。在嵌入式系统中,“Release JTAG Reset”是指通过JTAG(Joint Test Action Group)接口执行的一种操作,主要是用来释放或者解除目标处理器的复位信号,使其从复位状态恢复正常工作状态。

2024-03-01 15:55:47 417

原创 嵌入式学习笔记--JTAG

总之,JTAG接口在嵌入式系统开发周期中扮演着至关重要的角色,它为开发人员提供了一个深入底层硬件的能力,从而提高了调试效率和产品质量。- 实现In-System Programming(ISP),即在系统中编程,无需移除目标设备的芯片即可对其内部的闪存或EEPROM进行编程或更新。- 边界扫描测试(Boundary Scan),用于测试印刷电路板(PCB)上的各个元件间互联,尤其对于那些没有单独测试引脚的内部信号。- 在运行状态下监控系统的运行情况,这对于嵌入式系统的实时分析和性能优化非常有用。

2024-03-01 15:54:39 148

原创 嵌入式学习笔记--ROMBIST

与RAMBIST(随机存取存储器内置自测试)类似,ROMBIST用于验证存储在ROM中的数据是否正确,并确保能够准确读出存储器中的信息,而不会出现破坏性的读操作,即在进行读操作时不会改变或毁坏数据。在测试过程中,ROMBIST会对ROM中的每个地址进行读写操作,并比较读出的数据与原始数据是否一致。因此,ROMBIST的主要目标是确保ROM中的数据在制造、运输和使用过程中始终保持不变,从而确保系统的稳定性和可靠性。总的来说,ROMBIST是确保ROM数据正确性和可靠性的重要机制,为系统的稳定运行提供了保障。

2024-03-01 15:49:02 264

原创 嵌入式学习笔记--ROM

ROM芯片,即只读存储器(Read-Only Memory)芯片,是一种计算机内部存储器,其主要特点是数据只能被反复读取,但不能被修改或写入。因此,ROM芯片中的数据在供电正常的情况下是永久保存的,并且不会因为断电而丢失。根据编程方式的不同,ROM芯片可以分为几种类型,包括可编程ROM(PROM)、可擦除可编程ROM(EPROM)和电可擦除可编程ROM(EEPROM)。总的来说,ROM芯片是一种重要的计算机内部存储器,具有数据永久保存、非易失性和可编程等特点,为计算机系统的稳定运行提供了保障。

2024-03-01 15:48:26 218

原创 嵌入式学习笔记--GPIO

这使得GPIO在微控制器芯片上提供一个“通用可编程IO接口”,简化了I/O口的扩展,并为外部设备提供了额外的控制和监视功能。GPIO(General Purpose Input/Output),即通用输入/输出,是芯片上的一种接口,可以提供通用的、可配置的输入输出引脚。使用GPIO接口,可以通过控制寄存器中相应位的设置,灵活地配置每个引脚的功能,从而实现对这些设备或电路的控制。总的来说,GPIO是芯片上一种非常灵活和实用的接口,可以满足各种不同的应用需求,为芯片与外部设备之间的通信和控制提供了便利。

2024-03-01 15:46:50 138

原创 嵌入式笔记--xtal clock

在电子工程中,特别是微处理器和数字电路设计中,晶体振荡器(Crystal Oscillator,简称XO或XTAL Oscillator)是一种利用石英晶体(Quartz Crystal)压电效应工作的高频振荡器,能够产生极其精确且稳定的频率信号,通常被用作系统的时钟源。时钟信号的频率越高,微处理器能够执行的指令就越多,从而提高了处理器的性能。总之,XTAL Clock 是电子设备中用于提供稳定时钟信号的晶体振荡器产生的信号,它为微处理器和其他数字逻辑电路提供定时和同步,是电子设备正常工作的关键组成部分。

2024-03-01 15:40:36 249

原创 嵌入式笔记--De-assert

例如,在数字逻辑和微处理器中,一个信号可能被“断言”(asserted),即设置为有效状态,以执行特定的操作或功能。一旦操作完成或条件满足,该信号可能会被“解除断言”(de-asserted),即设置为无效状态,以停止或改变其影响的行为。在计算机科学和电子技术中,de-assert通常用于描述信号从活跃或有效状态转变为非活跃或无效状态的过程。这些系统中的信号和状态变化通常通过精确的时序和控制序列来管理,以实现可靠和高效的操作。因此,在特定的上下文或应用中,最好参考相关的文档或资源以获取更详细和准确的信息。

2024-03-01 15:38:51 284

原创 嵌入式学习笔记--管脚asserted

管脚asserted

2024-03-01 14:36:54 305

空空如也

空空如也

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

TA关注的人

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