
嵌入式
文章平均质量分 68
ycjunhua
这个作者很懒,什么都没留下…
展开
-
VMware中乌班图假死
最近一段时间VMware中乌班图经常性的桌面假死。原创 2024-07-26 04:20:47 · 885 阅读 · 0 评论 -
VMware 16虚拟机 Linux 挂载U盘(exFAT)
②、点击 USB控制器 ---> 选择符合自己U盘的兼容性(自己U盘是多少就选多少的,可以选高一点的兼容性)usb.restrictions.defaultAllow = "TRUE" 没有这行就添加,有就把false改为true。1、 首先查看Vmware 软件中的U盘配置。①、点击虚拟机选项---> 点击设置。1、安装乌班图对于exfat格式的支持。虚拟机系统(镜像文件)为:乌班图。2、修改虚拟机的配置镜像文件。3、查看是否已经识别到优盘。4、在虚拟机中创建挂载目录。6、查看是否挂载成功。原创 2024-07-26 03:41:23 · 716 阅读 · 0 评论 -
Linux内核移植
内核arch/arm/boot/目录的zImage:是arch/arm/boot/compressed目录的。内核arch/arm/boot/compressed目录的vmlinux:是Image压缩后,再拼接上。内核arch/arm/boot/目录的boot.img:是包括了uImage和开机Logo等资源的。内核arch/arm/boot/目录的uImage:是在zImage的基础上增加64字节前缀得。内核arch/arm/boot/目录的Image:直接编译生成的vmlinux去除格式后,且。原创 2024-04-26 15:33:04 · 741 阅读 · 0 评论 -
BootLooder引导传参和镜像编译
源码获取:下载地址:http://git.denx.de/?a=summary从芯片原厂获取配套的BSP拷贝“资料\sourcecode\u-boot-2014.07_v3_mipi.tar.bz2”到虚拟机解压源码:tar xvf u-boot-2014.07_v3_mipi.tar.bz2拷贝内核镜像生成工具(编译uImage时用到):sudo cpu-boot最初是由PPCBoot发展而来的已经成为当前主流引导程序。原创 2024-04-25 20:32:46 · 1049 阅读 · 3 评论 -
Bootloader应用启动分析详解
首先iRom被启动,它具备了内存执行程序所有的条件,除了不能写入可以进行读取,写入有64k的SRAM,32k的ROM和64k的RAM一起完成了启动,读写放在SRAM,代码放在ROM,他们配合起来完成了0阶段的启动;到底ROM从芯片的哪里加载程序是从SPI,UserbootCode,串口或者接口,它需要GPIO的引脚进行选择,有些是直接选有些是设备优先级,ROM会读取引脚的状态,并决定从sdk的第几个通道012并将这个程序加载到,会有其他文档将从那个地址加载程序到内存的哪个地址并且不能超过多少大小;原创 2024-04-25 12:22:42 · 473 阅读 · 0 评论 -
裸机开发调试
在 文 件 结 尾 处 添 加 一 句 :export PATH=$PATH:/usr/local/arm/4.3.2/bin/解压:sudo tar xvf arm-linux-gcc-4.3.2.bz2 -C /usr/local/arm/将编译和链接分步骤完成,实现对可执行程序的指定链接,并指定链接地址。查看内嵌反汇编 $objdump -S -d main_elf。函数无论是静态还是非静态的,总是被分配在.text中,函数内的局部变量由于是分配在栈上的,所以在nm中是。原创 2024-04-24 16:32:56 · 327 阅读 · 0 评论 -
嵌入式s5p5818核心板介绍
reserved保留,Normaol i/o :特殊功能寄存器映射区,MCU-A DDR 外界ddr,MCU-S static 静态存储器的接口;static#0static#1第0个或者第1个静态内存区;NAND不能随便通过地址访问;Internal Rom cpu内部的20k空间。统一寻址:片内片外存储器都能使用,且使用的是同一片连续的寻址空间。独立寻址:片内片外存储器只能选择其中一个。寻址空间采用统一编址方式进行管理。原创 2024-04-23 18:40:28 · 354 阅读 · 0 评论 -
RT-Thread-UART串口设备-DMA接受数据
/ 打开uart1串口 开启读写和DMA接受的功能。// 查找uart1串口。// 设置接受回调函数。// 开启设备控制写入。//定义串口的config值。原创 2024-04-19 11:46:21 · 1090 阅读 · 0 评论 -
RT-Thread-UART串口设备
在应用程序调用 rt_device_write()写入数据时,如果底层硬件能够支持自动发送,那么上层应用可以设置一个回调函数。但除过缓冲区之外的其他参数,在 open 设备前 / 后,均可进行更改。若串口以中断接收模式打开,当串口接收到一个数据产生中断时,就会调用回调函数,并且会把此时缓冲区的数据大小放在size参数里,把串口设备句柄放在dev参数里供调用者获取。若串口以 DMA 接收模式打开,当 DMA 完成一批数据的接收后会调用此回调函数。/* 波特率可取值*//* 数据位可取值*/原创 2024-04-19 10:29:29 · 715 阅读 · 0 评论 -
RT-Thread-IO设备模型
☐ 看门狗设备驱动程序根据看门狗设备模型定义,创建出具备硬件访问能力的看门狗设备实例,并将该看门狗设备通过 rt_hw_watchdog_register()接口注册到看门狗设备驱动框架中。应用程序通过 I/O 设备管理接口来访问硬件设备,当设备驱动实现后,应用程序就可以访问该硬件,I/O 设备管理接口与 I/O 设备的操作方法的映射关系下图所示。☐ 设备驱动根据设备模型定义,创建出具备硬件访问能力的设备实例,将该设备通过rt_device_register()接口注册到 I/O 设备管理器中。原创 2024-04-18 23:24:23 · 1018 阅读 · 0 评论 -
STM32串口层通讯编程示例
3、选择包路径rt-thread\components\drivers\include\ipc。1.最先在serial.h加上completion.h和dataqueue.h头文件。原创 2024-04-18 17:08:07 · 391 阅读 · 0 评论 -
RT-thread-线程间通讯3-事件集
事件集也是线程间同步的机制之一,一个事件集可以包含多个事件,利用事件集可以完成一对多,多对多的线程间同步。一个线程和多个事件的关系可设置为:其中任意一个事件唤醒 线程,或几个事件都到达后唤醒线程,多个事件集合可以用一个32bit无符号整型变量来表示,变量的每一位代表一个事件,线程通过"逻辑与"或"逻辑或"将一个或多个事件关联起来,形成事件组合。RT-Thread 定义的事件集有以下特点:☐ 事件只与线程相关,事件间相互独立☐ 事件仅用于同步,不提供数据传输功能。原创 2024-04-17 17:14:14 · 734 阅读 · 0 评论 -
RT-thread-线程间通讯1-信号量
每个信号量对象都有一个信号量值和一个线程等待队列,信号量的值对应了信号量对象的实例数目、资源数目,假如信号量值为 5,则表示共有 5 个信号量实例(资源)可以被使用,当信号量实例数目为零时,再申请该信号量的线程就会被挂起在该信号量的等待队列上,等待可用的信号量实例。如果删除该信号量时,有线程正在等待该信号量,那么删除操作会先唤醒等待在该信号量上的线程(等待线程的返回值是-RT_ERROR),然后再释放信号量的内存资源。系统不再使用信号量时,可通过删除信号量以释放系统资源,适用于动态创建的信号量。原创 2024-04-17 00:30:29 · 718 阅读 · 0 评论 -
Pthread线程管理
线程控制块由结构体 struct rt_thread 表示,线程控制块是操作系统用于管理线程的一个数据结构,它会存放线程的一些信息,例如优先级、线程名称、线程状态等,也包含线程与线程之间连接用的链表结构,线程等待事件集合等。注意:空闲线程是一个线程状态永远为就绪态的线程,因此设置的钩子函数必须保证空闲线程在任何时刻都不会处于挂起状态,例如 rt_thread_delay(),rt_sem_take() 等可能会导致线程挂起的函数都不能使用。如果新启动的线程优先级比当前线程优先级高,将立刻切换到这个线程。原创 2024-04-14 23:44:13 · 983 阅读 · 0 评论 -
RT-Thread内核简介
总结:系统先调用.s汇编代码的启动,汇编代码的启动完成以后进入到c语言的入口函数,在入口中调用统一的启动入口函数,在这个函数中进行了一系列的初始化,把rt_thread所有的组件进行初始化好以后,接着通过线程初始化的方式创建了多个线程,创建了用户层、timer定时器的线程以及idle线程,创建好了线程之后就进行调度,调度到了应用层的线程的时候,就会走到main函数里面执行用户层的所编写的代码。,当其他线程释放内存块到内存池时,如果有挂起的待分配内存块的线程存在的话,则系统会将这个 线程唤醒。原创 2024-04-14 01:23:41 · 623 阅读 · 0 评论 -
RT-Thread 启动流程源码详解
总结:系统先调用.s汇编代码的启动,汇编代码的启动完成以后进入到c语言的入口函数,在入口中调用统一的启动入口函数,在这个函数中进行了一系列的初始化,把rt_thread所有的组件进行初始化好以后,接着通过线程初始化的方式创建了多个线程,创建了用户层、timer定时器的线程以及idle线程,创建好了线程之后就进行调度,调度到了应用层的线程的时候,就会走到main函数里面执行用户层的所编写的代码。main() 函数是 RT-Thread 的用户代码入口,用户可以在 main() 函数里添加自己的应用。原创 2024-04-14 01:22:47 · 1173 阅读 · 0 评论 -
STM32F103-PRO的串口控制平台的实现
1. STM32F103单片机芯片及其开发板2. 一根USB数据线和RS232升USB转TTL转换模块(包括RS232升USB转TTL线和RS232升USB转TTL小板)3. ST-Link/V2调试器4. Keil或IAR等集成开发环境5. 串口数据传输工具,如SecureCRT等。原创 2024-04-13 14:45:27 · 1852 阅读 · 0 评论 -
SecureCRT通过USB-Servial ch340串口无法连接单片机
通过USB To TTL连线 STM32F103-PRO,烧制程序到单片机上,通过SecureCRT通过USB-Servial ch340串口无法链接RS232升USB转TTL连接正确。红色连接GND,pa9对应褐色线连接RXD,pa10黑色线连接TXD,连接没问题。4、检查ST-Link线是否连接,用于下载串口程序到单片机上。3、检查RS232升USB转TTL模块连接开发板的连接。红色线连接GND,褐色线连接RXD,黑色线连接TXD。检查ST-Link没有连接到单片机。发现3v3白色线不用连接。原创 2024-04-13 11:37:04 · 1236 阅读 · 0 评论 -
RT-Thread移植
RT-Thread Smart(简称 rt-smart)是基于 RT-Thread 操作系统衍生的新分支,面向带 MMU,中高端应用的芯片,例如 ARM Cortex-A 系列芯片,MIPS 芯片,带 MMU 的 RISC-V 芯片等。RT-Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,简称为 rt-smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间(32 位系统上是 4G 的独立地址空间)此操作将把 FinSH 组件的源码加入工程中。原创 2024-04-10 17:46:33 · 975 阅读 · 0 评论 -
P-Thread介绍
RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统。RT-Thread 拥有良好的软件生态,支持市面上所有主流的编译工具如 GCC、Keil、IAR。做世界级的 OS,让万物互联,信息畅通无阻,成为未来 AIoT 领域最为主流的操作系统平台。RT-Thread是一个实时操作系统,移植到stm32单片机中。广泛应用于能源、车载、医疗、消费电子等多个行业。1、1、RT-Thread愿景。1、2、RT-Thread目标。1、3、常见的操作系统。原创 2024-04-10 14:38:53 · 244 阅读 · 0 评论 -
STM32-模数转化器
ADC1的DR寄存器再转换通道4和通道5,又先后的顺序,先转换通道4再转换通道5,转换完通道4的数据就存放到DR寄存器中,再开启DMA功能,我们会把数据存放到指定的内存上,开辟的内存是定义的一个数组,把内存的地址给它,它通过DMA的方式将数据从DR上存放到数组里面,这个内存地址递增,转换通道5,转换通道5的数据存放到DR寄存器上,我们在通过DMA的方式将数据从DR上存放到数组中,转换完一次我们就可以读内存的数据了。开启时钟,开发ADC1的时钟,开启GPIOA的时钟到APB2上,还要开启DMA1的时钟。原创 2024-04-10 01:56:40 · 1184 阅读 · 2 评论 -
ARM架构学习笔记2-汇编
程序状态寄存器中有一位,名为“T',它于1时表示当前运行的是Thumb指令。假设函数A是使用Thumb指令写的,函数B是使用ARM指令写的,怎么调用A/B?我们可以往PC寄存器里写入函数A或B的地址,就可以调用A或B. 但是怎么让CPU在执行A函数是进入Thumb状态,在执行B函数时进入ARM状态?① ARM指令集,这是32位的,每条指令占据32位,高效,但是太占空间 2 Thumb指令集,这是16位的,每条指令占据16位,节省空间 要节省空间时用Thumb指令,要效率时用ARM指令。原创 2024-04-05 23:43:24 · 638 阅读 · 0 评论 -
ARM架构学习笔记1-寄存器
MRS命令:表示Move to Register from Status,就是把Status寄存器的值移动到通用寄存器中MOV R1, RO的结果是:R1的值等于RO的值,后面的RO是源,前面的R1是目的。User用户模式 sys系统模式 FIQ 快中断模式 IRQ 中断模式 ABT模式 SVC UND MON HYP各种异常模式。Program status Register:程序状态寄存器 ,用来保存某些状态的。MSR:把一般寄存器的R0的值移动到组合状态寄存器中。XPSR是程序状态寄存器。原创 2024-04-05 22:11:56 · 614 阅读 · 0 评论 -
硬件知识:点亮led
将某个引脚设置为输出引脚,查找路径STM32103数据手册的第九章,GPIOS-GPIO registers-》Port configtion register low(GPIOX-x表示GPIOA,b,c),就看MODE0。一步法:分为两个寄存器,set_reg寄存器,直接设置位为1有效,设置为0无效,在直接写入数据寄存器;上图中有红绿蓝pb0,pb1,pb5控制,例如红色LED,是低电平,蓝色是高电平,高电平流向低电平,LED点亮;如果红色的高电流,蓝色也是高电平,两端无电位差,灯熄灭。原创 2024-04-02 17:40:43 · 468 阅读 · 0 评论 -
嵌入式介绍
比如,你可能接触不到这些知识 重定位、代码段数据段BSS段、位置无关码、相对跳转、绝对跳转、 设置栈、中断上下文、保存/恢复中断现场、ARM架构 这些知识,是单片机的核心,学习了它,有助于在RTOS领域发展。1,从开发板上电的第一条指令开始,讲解整个程序涉及的一切只是, 包括但不限于这些: 重定位、代码段数据段BSS段、位置无关码、相对跳转、绝对跳转、 设置栈、中断上下文、保存/恢复中断现场、ARM架构 I2C协议与编程、SPI协议与编程、LCD、触摸屏、各类外设编程。3、学习单片机的路径。原创 2024-04-02 00:31:39 · 414 阅读 · 0 评论 -
STM32串口
要进行串口的数据收发:1、创建通用gpio口,这个gpio口复用为串口,所以首先要初始化gpio口,然后进行串口的初始化,我们使用串口1,我们首先要使能时钟,我们要开启复用功能的时钟使能,同时开启gpio口的时钟使能,首先我们要看串口1对应的gpio口是哪个,引脚对应的那个引脚,查找对应关系,就要打开串口对应手册。时钟来源是由发送和接收器控制器控制的,发送有发送时钟,接受有接受的时钟,发送者来源于外部时钟,经过波特率发生器接受配置以后,最终将波特率发送给发送者控制器控制数据寄存器实现数据的发送和接受。原创 2024-03-31 18:15:06 · 1186 阅读 · 0 评论 -
STM32的DMA
从外设(TIMx[x=1、2、3、4]、ADC1、SPI1、SPI/I2S2、I2Cx[x=1、2]和USARTx[x=1、从外设(TIMx[5、6、7、8]、ADC3、SPI/I2S3、UART4、DAC通道1、2和SDIO)产生的5。12个独立的可配置的通道(请求):DMA1有7个通道,DMA2有5个通道,每个通。外设的DMA请求,可以通过设置相应外设寄存器中的DMA控制位,被独立地开启或关闭。还有一个仲裁器来协调各个。外设的DMA请求,可以通过设置相应外设寄存器中的控制位,被独立地开启或关闭。原创 2024-03-31 01:33:48 · 1601 阅读 · 0 评论 -
STM32嵌套中断向量控制器NVIC
NVIC(Nest Vector Interrupt Controller),嵌套中断向量控制器,作用是管理中断嵌套 先级。核心任务是管理中断优管理中断嵌套:我们在处理某个中断的过程中还没处理完这个中断,又来了一个中断,是否可以打断这个中断,不能就存在中断嵌套特点:68个可屏蔽中断通道(不包含16个Cortex-M3的中断线)16个可编程的优先等级(使用了4位中断优先级)低延迟的异常和中断处理电源管理控制系统控制寄存器的实现。原创 2024-03-30 12:31:26 · 1980 阅读 · 0 评论 -
STM32定时器介绍
共有8个定时器:高级定时器(TIM1和TIM8)、通用定时器(TIM2--TIM5)、基本定时器(TIM6 和TIM7)有RCC给到TIM2----=-----------TIM7的时钟频率是72mhz。它们可以一起同步操作。● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器。//2.开启GPIO的时钟->GPIOB ->APB2。位的自动装载计数器组成,它由一个可编程的预分频器。● 使用外部信号控制定时器和定时器互联的同步电路。● 使用外部信号控制定时器和定时器互连的同步电路。原创 2024-03-29 17:25:48 · 2636 阅读 · 0 评论 -
STM32通用输入输出
推挽:走的输出数据寄存器复位,通过输出控制电路输出到保护二极管;推挽输出有一定的驱动能力,可以真正的输出高低电平。第一个是gpio的引脚,第二个事gpio的时钟频率,,第三个参数是gpio的模式(输出输出,上拉下拉)开漏:实际是没有驱动能力的,想要驱动设备,需要外部由驱动电路支持。第一参数是gpio的类型,第二个参数gpio类型的置位到那个引脚。第一参数是gpio的类型,第二个参数gpio类型的复位到那个引脚。正好在13位,gpio正好输出电频在13位。第一个参数就是初始化暗中类型的gpio,原创 2024-03-28 16:52:58 · 551 阅读 · 0 评论 -
SMT32系统时钟初始化
1、通过SystemInit函数进行系统的初始化,包括系统时钟的初始化。设置系统化微控制系统,初始化flash接口,更新pll和系统时钟。最终时钟源的选择是通过分频器外部时钟进行9倍时钟后给到系统时钟。再接着开启外部高速化时钟,Css时钟,同时开启pLL时钟。接着在SetSystemClockTo72设置系统时钟。接下来初始化时钟配置寄存器,1到15位全部清零。等待高速时钟初始化好和时钟等待时间到退出循环。PL时钟走外部时钟*9= 72MHZ。显然不是互联产品,走下面代码。接下来判断是否走互联产品。原创 2024-03-28 10:57:14 · 303 阅读 · 0 评论 -
STM32启动文件命名方式说明以及启动过程分析
stm32f103C8 :选择的启动文件->startup_stm32f10x_md.s。上电或按下复位按键,从Reset_Handler 开始执行。cl:互联型产品,stm32f105/107系列。xl:超高密度产品,stm32f101/103系列。md:中等容量度产品,64KB和128KB。vl:超值型产品,stm32f100系列。执行的第一个函数:SystemInit。ld:小容量产品, 小于64KB。hd:大容量产品,大于128KB。执行的第二个函数:__main。完成全局/静态变量的初始化。原创 2024-03-28 01:22:10 · 431 阅读 · 0 评论 -
STM32启动方式
s在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。0x0000 0000 -----0x0800 0000 映射的内部Flash。启动方式:从内部的Flash中启动、原创 2024-03-28 00:52:54 · 316 阅读 · 0 评论 -
SMT32的存储器架构
程序存储器、数据存储器、寄存器和输入输出端口,被组织在同一个4G的线性地址空间中。:作为片上外设区,用于存放厂商外设寄存器。要操作外设,即修改这里对应的外设寄存器;小端存储空间端模式是一种将高字节存储在低地址处,将低字节存储在高地址处的字节序方式。圈出的三个范围,分别对应前面介绍的三个启动模式。可访问的存储器空间被分为8个主要快,每个块为512mb,总共为4G。的片上外设寄存器进行读写操作,以控制外设资源,实现所需效果。:作为代码区,用于存放下载的代码。外设的地址范围,后面很快就会用到;原创 2024-03-28 00:26:56 · 206 阅读 · 0 评论 -
STM32系统结构及总线介绍
四个被动单元 内部SRAM 内部闪存存储器 FSMC AHB到APB的桥(AHB2APBx),它连接所有的APB设备 这些都是通过一个多级的AHB总线构架相互连接的。四个驱动单元: CortexTM-M3内核DCode总线(D-bus),和系统总线(S-bus) 通用DMA1和通用DMA2。与总线相关的主要参数有总线宽度、总线频率和总线带宽。总线宽度是指总线能同时传输的数据位数,总线频率是指总线的工作速度,频率越高,速度越快;(总线矩阵):用于总线之间的访问优先级管理控制;总线:用于外设接口的数据传输;原创 2024-03-27 23:59:26 · 1164 阅读 · 2 评论 -
STM32F10X开发环境的搭建
在Groups:中点击新建按钮,新建下图中的组名与之前文件夹名一致。在 Files:中添加对应的文件(在弹出的打开文件窗口中添加)。然后再安装相应的芯片支持包:我们用的是stm32f103所以安装1xx系列的支持包。在KEIL主界面左边工程目录中就会有如下的文件目录。可复制以下代码到main.c文件中(覆盖掉以前的内容),然后按F7键重新编译。1、打开keil5软件,点击project,创建新的keil5工程。在 C/C++中输入包含文件的路径\Lib\inc;3、管理keil工程内部的目录结构。原创 2024-03-27 22:33:42 · 788 阅读 · 0 评论 -
【STM32】Keil5在编译过程中出现.cannot open source input file “STM32F1Xx.h“: No such file or directory的问题
编译报错cannot open source input file “STM32F1Xx.h“: No such file or directory。2、重新配置头文件包含路径。原创 2024-03-27 22:55:51 · 2156 阅读 · 3 评论