自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 系统移植--Linux内核调试及rootfs移植

文件系统是,系统引导程序会在根文件系统挂载后 从中把一些基本的初始化脚本和服务等加载到内存中去运行1.1 根文件系统的内容:shell命令(elf格式)()/内核不支持这些shell命令系统管理shell命令(elf格式)(通过bin 和 sbin放置 shell命令,因为内核不支持这些命令3.usr shell命令(elf格式)(通过busybox编译生成):内核运行的第一个应用程序(通过busybox编译生成)(elf格式)(从交叉编译工具链中获取)/内核不支持库库简易说就是已经写好的程序。

2023-10-29 15:03:05 167

原创 系统移植--Linux驱动移植及内核深化

程序可分为驱动逻辑代码(drivers)和硬件信息(设备树), 驱动控制灯闪,设备树控制哪个灯闪。更换灯,只需要修改设备树即可,逻辑代码不用变。设备改变,只需要改变设备树,不需要修改逻辑代码。设备树的语法为树状结构,由一系列的节点和属性组成,根节点下包含子节点子节点下还可以包含子节点,节点内部包含了对应设备的属性。dtsi (i类似include)类似于头文件,包含一些公共的信息,可被其它设备树文件引用。uboot 内有网卡驱动,linux内核没有网卡驱动,所以需要网卡驱动移植入内核。

2023-10-27 23:25:27 132

原创 系统移植--Linux内核移植

1.1内核与操作系统内核是一个操作系统的核心,提供了操作系统最基本的功能,是操作系统工作的基础,决定着整个系统的性能和稳定性操作系统是在内核的基础上添加了各种工具集、桌面管理器、库、shell、应用程序1.内核提供最核心的功能,内核是操作系统工作的基础,决定整个系统的性能和稳定性。2.ubuntu是操作系统,内核是Linux。操作系统是在内核基础上添加了shell、库、应用程序等。3. shell不属于内核。

2023-10-26 22:46:10 110

原创 系统移植-uboot移植深化

1.4412的SOC和origen的SOC相同,但在origen基础上需要修改一些外围的网卡、硬件驱动设置。2.因为uboot源码并不支持我们的开发板,这里我们需要从源码支持的开发板中找一个硬件与我们最类似的,在其基础上进行修改,这里我们参考的是samsung公司的origen通过实验手册注册开发板信息 ,详见实验手册3.

2023-10-18 23:02:43 98

原创 系统移植--uboot源码配置编译

、支持丰富的用户命令、支持丰富的网络协议、支持丰富的文件系统(管理和访问磁盘/文件,给上层留read/write接口)、支持丰富的设备驱动、更新活跃、用户较多、资料丰富、开放源代码、较高的稳定性、不具有通用性(不同的处理器、开发板uboot不可通用)(不同处理器汇编、串口不同):即与CPU架构或开发板硬件相关的源码,硬件的改动对应的代码也需要进行修改(uboot支持丰富的处理器和开发板,但不具有通用性:把所有的代码都写一遍(X86和ARM都有),但不同的处理器和开发板,需要用到的代码不同,视情况删减。

2023-10-16 23:33:39 145

原创 系统移植-交叉编译工具链

我们下载到开发板上的镜像文件,往往都是开源代码,先移植(软硬件不匹配需要移植也就是配置),然后编译成机器码生成可执行文件形成的镜像文件,接下来将讨论如何移植这些文件。

2023-10-12 01:01:19 168

原创 系统移植-Linux内核安装及交叉编译

一、通过 tftp 加载内核和根文件系。

2023-10-10 15:15:22 221

原创 系统移植-uboot概述和使用

1. uboot首先刷到SD卡中,对软硬件初始化,再将外存中linux、dtb、rootfs搬到RAM。在操作系统运行之前运行的一小段代码用于软硬件环境的初始化。为操作系统的加载和运行做准备(本身不是操作系统)2.1Bootloader基本功能初始化软硬件环境 、 引导加载linux内核 、 给linux传参(linux运行时需要的参数由Bootloader提前准备) 、执行用户命令 (类似于shell命令)

2023-10-08 00:01:29 132

原创 系统移植-交叉开发环境搭建

nfs:(Network File System)即网络文件系统,其基于UDP/IP使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。二者的区别:tftp基于TCP/IP协议,在服务端和客户端均有文件,而nfs基于UDP/IP协议,文件只存在服务器,客户端在使用时不需要下载文件,只是将文件挂载到了客户端。2. /opt/4412/rootfs 是 nfs 服务器的工作目录,即客户端要访问的文件需要放到该目录下。3.Net模式-连接外网;

2023-10-07 22:12:15 45

原创 系统移植-嵌入式系统移植导学

4.uboot对软硬件环境初始化(栈、网卡、硬件、串口),将linux(程序)、设备树(dtb)、根文件系统(rootfs)从EMMC(外存)搬移到。5.Linux开始启动,首先对开发板上的软硬件环境初始化(栈、网卡、硬件),Linux再从内存中(或网络)挂载根文件系统(即把根文件系统拿过来用)。1.开发板上电后首先运行SOC内部iROM中固化的程序(BL0),这段代码先对基本的软硬件环境(时钟、内存等)进行初始化。镜像是编译完的系统,可以直接使用,Linux是源码,和开发板硬件不匹配,需要。

2023-10-06 23:24:25 100

原创 开发板FS4412-IIC总线

1. IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用2. IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;

2023-10-03 15:24:21 226

原创 开发板FS4412-PWM 实验

蜂鸣器有源蜂鸣器只要接上额定电源就可以发出声音 (GPIO控制无源蜂鸣器利用电磁感应原理,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜(20-20000HZ可被人耳接收)发声(PWM控制无源蜂鸣器的控制方式:1.GPIO控制CPU会陷入到Delay中,浪费CPU资源,方法不好用while(1)c2.PWM控制PWM 即脉冲宽度调制,通过对脉冲的宽度进行调制,来获得所需要波形2.1PWM参数1.周期2.占空比二、Exynos4412下的PWM控制器。

2023-10-02 14:38:57 296 1

原创 开发板FS4412-RTC实验

实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源(独立),有些RTC为了在主电源掉电时还可以工作,需要外加电池供电。

2023-09-27 22:48:30 171 1

原创 开发板FS4412-ADC实验

ADC(Analog to Digital Convert)即模数转换器:指一个能将模拟信号转化为数字信号的电子元件ADC的分辨率一般以输出二进制数的位数来表示,当最大输入电压一定时,位数越高,分辨率越高;n位的ADC能区分输入电压的, 比如一个12位的ADC,最大输入电压为1.8v,那么该ADC能区分的最小电压为1.8v/(2^12)≈0.00044v,当转换的结果为m时,则实际的电压值为m*(1.8v/212);

2023-09-26 22:38:46 215 1

原创 开发版FD4412-中断处理

处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生 这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件 异常事件处理完成之后再返回到被异常打断的点继续执行程序​不同的处理器对异常的处理的流程大体相似,但是不同的处理器在具体实现的机制上有所不同;比如处理器遇到哪些事件认为是异常事件遇到异常事件之后处理器有哪些动作、处理器如何跳转到异常处理程序如何处理异常、处理完异常之后又如何返回到被打断的程序继续执行等我们将这些细节的实现称为处理器的异常处理机制。

2023-09-25 23:21:14 99 1

原创 开发板FS4412 -中断控制器

所有,通过中断控制器处理后再CPU1.时可对这些中断排队,然后按照优先级依次发送给CPU处理2.中断控制器为每个中断分配优先级 n,3.一个中断正在处理时若又产生其它中断,可将,待CPU空闲时再发送4.中断控制器处理5.中断处理器为每一个中断选择一个中断类型(FIQ或IRQ)6.CPU接收到中断信号后并不能区分是哪个外部设备产生的,此时CPU可查询中断控制器 来获取当前的中断信号是由哪个硬件产生的,然后再进行对应的处理7.中断处理器可以打开或禁止每一个中断驱动开发主要用到SPI中断。

2023-09-23 00:11:16 198 1

原创 开发板FS4412-轮询与中断

执行程序时是否需要其服务,若需要则给予其服务,若不需要一段时间后再次询问,周而复始(询问串口)

2023-09-22 21:40:51 82 1

原创 开发板FS4412-WDT实验

WDT Watch Dog Timer,即看门狗计时器,其主要作用是当发生软件故障时可产生复位信号使SOC(系统级芯片)复位,其本质是一个计数器​WDT工作原理:每当计数器减到0就会让开发板复位开发板上电后程序正常执行,计数器也会相应的从设定的数减小,当程序运行一段时间后会向计数器刷新新数值,然后重新进行正常执行,再过一段时间又给计数器写值,以此类推当程序出现错误后,程序不能正常运行也就不会每隔一段时间给计数器刷新,当计数器变为零就会复位出于安全考虑,使用WTD。

2023-09-21 23:13:06 81

原创 开发板FS4412-UART实验

1.UART是总线协议,通信协议通用异步收发器,是一种通用的通信总线。该总线有两条数据线,可以实现的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的、芯片与外围设备通信2.通信基础-并行和串行总线-导线,传递高低电频信号,并行通信:通过总线将不同数据通过不同线一次性发送串行通信:一根线传递”8“位,逐次传递3.通信基础-单工 和双工单工:单向通信双工:双向通信半双工:A与B不能同时发送数据,一根总线;全双工:A和B可以同时发送数据,两根总线。4.波特率。

2023-09-21 00:06:53 486

原创 开发板FS4412-C工程与寄存器封装

目录一、C语言工程简介二、启动代码分析 ​编辑三、 c语言实现LED实验四、寄存器的封装方式五、寄存器操作标准化Makefile map.lds 链接脚本文件:告诉编译器 链接的信息 在什么位置 map.lds中找 map.lds:代码、数据、未初始化的全局变量放在BSS段,地址和排版,都可以在map.lds 找到信息二、启动代码分析异常向量表32个字节,AR,碰到异常,先跳转到相应异常向量表的位置,异常向量表中写跳转指令,跳转至异常处理程序b.就是跳转到自身相当于死循环 92 _s

2023-09-19 22:12:39 66 1

原创 单片机板-FS4412开发环境搭建

FS4412是集成ARM Cortex-A9四核CPU的Exynos4412。

2023-09-13 00:18:11 504

原创 伪操作与混合编程

专用指令是指某个处理器独有的指令,如ARM,有修改CPSR状态指令、软中断指令和协处理器指令,这些专用指令不能用C语言编写,因此只能用汇编来写。2.4 当函数的参数不多于4个时使用R0-R3传递,当函数的参数多于4个时,多出的部分用栈传递(传参的本质;用来规定不同编译器编译的标准。防止出现类似采用不同压栈储存方式(一个采用增栈,一个采用减栈)而产生的错误。通用指令是指数据处理指令、跳转指令、内存读写指令,这些指令可以在任意处理器上运行,而。不同的编译器伪操作的语法不同,这里讲的是gcc编译器的伪操作语法。

2023-09-11 23:23:07 40

原创 ARM汇编指令集-专用指令

将CPSR改成usr模式,ARM状态、开启IRQ、FIQ[7:0] 分别为00010000转换成16进制为0x10CPSR 更改为USR模式后,无法将CPSR写成0xD3 SVC模式(0x000000D3转换成二进制的值为11010011),因为USR非特权模式,权限低不能随意修改核心的东西。

2023-09-11 21:11:15 136

原创 ARM汇编指令集-栈的种类与应用

意思为:把sp指向的3个连续地址段(应该是3*4=12字节(因为为r0,r1,r2都是32位))中的数据拷贝到r0,r1,r2这3个寄存器中去(如果这个地方还不懂的话,可以参看我文章开头提到的链接,里面有详细的图解)由于局部变量存在栈里,而栈在之前使用过后不会被清空,而初始化一个局部变量后其地址是栈指针指向的地址,即栈指针上次使用栈的地址,因此如果不给局部变量赋初值,其值会是上次使用栈存的值。栈:栈指针指向最后一次压入到栈中的数据的相邻位置,压栈时可直接压栈,之后需要将栈指针移动到相邻位置。

2023-09-10 23:04:11 259 1

原创 ARM汇编指令集-跳转与存储器访问指令

(本质修改PC寄存器的值修改成跳转标号下第一条指令的地址,同时将跳转指下一条指令的地址存储到LR)④ <= , C = 0 或 Z = 1。⑤ < ,C = 1 且 Z = 0。(本质修改PC寄存器的值修改成跳转标号下第一条指令的地址):参与运算的数是立即数,CPU去寻找的是立即数的寻找方式。寻址方式就是CPU去寻找操作数的方式,不同的获取方式。跳转指令:实现程序的跳转,本质是修改了PC的寄存器。以上寻址方式和索引方式同样适用于LDR。基址 加 变址 寻址 的索引方式。(不同处理器的寻址方式不同)

2023-09-09 23:44:24 761

原创 汇编指令-数据处理指令

是一种能够进行的指令。它能够编译生成一条32位的机器码,且能被CPU识别和执行。数据处理指令有多种类型,其中包括等。这些指令通过操作码来指示执行哪种运算,通过目标来,通过第一操作寄存器来指定第一个参与运算的数据,第二操作数可以是寄存器或立即数,用来指定第二个参与运算的数据。

2023-09-09 03:34:55 129

原创 ARM指令集仿真环境搭建

c语言和汇编语言1.c语言.c 1. 语句a++;2. 注释 // 3. 预编译指令 # if 0 ... # else ... # endif2.汇编@ 汇编的中符号@ 1.指令: 能够编译生成一条32bit机器码,并且能被CPU识别和执行@ 1.数据处理指令: 进行数学运算、逻辑运算@ 2.跳转指令: 实现程序的跳转,本质就是修改了pc寄存器@ 3.Load/srore指令:访问(读写)内存@ 4.状态寄存器传送指令:用于访问(读写)CPSR寄存器。

2023-09-08 23:56:03 109 1

原创 ARM异常处理

每一种处理器模式下都有一个状态寄存器SPSR,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。指令流水线机制的引入确实能够大大的提升指令执行的速度,但在实际执行程序的过程中很多情况下流水线时是无法形成的,比如芯片刚上电的前两个周期、执行跳转指令后的两个周期等,所以指令流水线的引入以及优化只能使平均指令周期。的中断(高优先级的可以打断低优先级的,同级和低的不可打断)(若是来了IRQ,则会禁止IRQ的中断,不会禁止FIQ)(若是来了FRQ,则会禁止FIQ和IRQ)

2023-09-08 21:45:04 254 1

原创 ARM寄存器组织

因为register变量可能不放在内存中,C语言中不能对register变量使用“&”,C++编译器做了优化,可以寄存器变量放入内存中,可以取地址;register变量必须是能够被CPU所接受的类型,意味着register变量必须是一个单个的变量,变量长度小于等于寄存器长度;由于寄存器的数量有限,尽量在大量频繁操作时使用寄存器变量,且声明变量的个数应该尽量少。注:共40个寄存器(带三角是某个模式下通用的,不带的是通用的)(之前是37个,monitor多了3个寄存器)

2023-09-06 23:49:03 57

原创 ARM体系结构理论基础

1.1ARM的含义1.ARM(Advanced RISC Machines)有三种含义:一个公司的名称、一类处理器的通称、一种技术2.早先经典处理器:包括ARM7、ARM9、ARM11家族Cortex-A系列:针对开放式操作系统的高性能处理器, 应用于智能手机、数字电视、智能本等高端运用Cortex-R系列: 针对实时系统、满足实时性的控制需求, 应于汽车制动系统、动力系统等Cortex-M系列:为单片机驱动的系统提供了低成本优化方案,应用于传统的微控制器市场、智能传感器、汽车周边等3.

2023-09-06 22:31:52 76 1

原创 ARM体系结构与接口技术-计算机硬件基础

arm学习的基本架构

2023-09-05 23:20:32 71

系统移植-uboot移植深化

系统移植-uboot移植深化

2023-10-18

空空如也

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

TA关注的人

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