嵌入式
文章平均质量分 91
dongdong0071
这个作者很懒,什么都没留下…
展开
-
RTOS中常见的堆栈溢出检测方法
RTOS任务都需要分配堆栈,堆栈大小不合理,会造成内存越界或者资源的浪费。转载 2024-01-14 16:59:18 · 520 阅读 · 0 评论 -
开关icache代码
汇编代码读写cp15以开关icachemrc p15,0,r0,c1,c0,0;// 读出cp15的c1到r0中bic r0, r0, #(1// bit12 置0 关icacheorr r0, r0, #(1// bit12 置1 开icachemcr p15,0,r0,c1,c0,0;原创 2016-08-14 21:14:08 · 494 阅读 · 0 评论 -
几种存储器类型总结
转自http://blog.csdn.net/lg1259156776/说明:从操作系统来讲,不同类型的存储器的出现正是为了实现经典的内存架构:多级缓存结构,为了匹配高速的CPU。从CPU内部的寄存器,到高速cache,再到主存,然后是磁盘,最后是磁带,速度越来越慢,但价格越来越便宜。包括DSP的内存架构,也是分为三级,第一级是CPU内部的寄存器,第二级L1P和L1DRAM,第三级是L1S转载 2016-09-07 12:03:36 · 1716 阅读 · 0 评论 -
Hex与ASCII相互转换函数
http://blog.csdn.net/surelion/article/details/7926116转载 2016-06-30 18:23:22 · 3298 阅读 · 0 评论 -
bss,data,text,rodata,堆,栈,常量段
//红色部分为问题部分section 结构SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr =fill...}secname:段名contents:决定哪些内容存放在此段start:本段的连接地址(实际运行地址)AT(转载 2016-11-23 16:50:05 · 410 阅读 · 0 评论 -
s5pv210开发板笔记
1、短路接口处是USB启动,不短路时是SD/iNand启动原创 2017-03-05 20:50:08 · 458 阅读 · 0 评论 -
将函数名(地址)作为参数传递
转自:https://blog.csdn.net/abbcbbd/article/details/50411734#include<stdio.h>int add(int a,int b){return a+b;}int AAA(int a,int b,int(*p)(int,int)) //注意定义的函数指针{return p(a,b);//通过函数指针p调用所指...转载 2018-08-12 00:04:43 · 5429 阅读 · 0 评论 -
void指针和数据指针
https://blog.csdn.net/qq_29924041/article/details/54882135转载 2018-11-19 22:57:58 · 1098 阅读 · 0 评论 -
void及void指针含义的深刻解析
转自:https://blog.csdn.net/geekcome/article/details/6249151void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pi...转载 2018-12-11 16:41:48 · 190 阅读 · 0 评论 -
Nor Flash芯片内执行(XIP)
前言:这个所谓的芯片内执行(XIP)对于我这种一根筋的人是很难理解的,一直总觉得CPU是只能在RAM中运行程序,为毛能够在Nor Flash中执行程序呢,这里面就有个概念容易混淆,也可能是翻译理解的问题。 所谓片内执行不是说程序在存储器内执行,CPU的基本功能是取指、译码、运行。Nor Flash能在芯片内执行,指的是CPU能够直接从Nor flash中取指令,供后面的译码器和执行器来...转载 2018-12-31 01:27:10 · 1634 阅读 · 0 评论 -
ldr指令、ldr伪指令和mov指令的区别
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0中。而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。x...转载 2019-01-06 03:02:06 · 1159 阅读 · 0 评论 -
链接脚本文件的写法
对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述: SECTIONS { ... secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { conten...转载 2019-01-15 19:50:30 · 1376 阅读 · 1 评论 -
uboot命令行模式run_command函数的实现
uboot命令行模式大家应该都清楚,实际上都是靠run_command函数我是基于AM3358的uboot来说明的,其实其他的都一样,各个版本uboot的这个函数好像都是一个样子的。1.先看一下u-boot.lds文件,其中有如下一段,先记着这个事情。2.在command.h中有如下代码:一:二:三:这些代码要记着,之后就会揭晓他们的作用啦!3.举一...转载 2019-02-17 13:20:07 · 3818 阅读 · 0 评论 -
mini2440 调试C语言部分的点灯代码
#define rGPBCON (*(unsigned int *)0x56000010)#define rGPBDAT (*(unsigned int *)0x56000014)#define rGPBUP (*(unsigned int *)0x56000018) rGPBUP=0x7FF; rGPBCON=0x00001400; rGPBDAT=0x20;...原创 2019-02-22 23:42:45 · 340 阅读 · 0 评论 -
EPC-6G2C-L开发板
1、开发板出现Read-only file system的解决办法创建文件夹出现如下提示mkdir: can't create directory 'test': Read-only file system使用命令 mount rw -o remount / 即可解决...原创 2019-03-31 20:31:34 · 481 阅读 · 0 评论 -
TCP/IP协议详解——邮差与邮局(2)
信号的传输总要符合一定的协议(protocol)。比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号。这样一个“狼烟=敌人入侵”就是一个简单的协议。协议可以更复杂,比如摩尔斯码(Morse Code),使用短信号和长信号的组合,来代表不同的英文字母。比如SOS(***—***, *代表短信号,-代表长信号)。这样“***= S, —=O”就是摩尔斯码规定转载 2016-08-14 17:56:52 · 470 阅读 · 0 评论 -
三线SWD模式Jlink
http://blog.csdn.net/yikai2009/article/details/12322393转载 2016-06-12 18:01:38 · 471 阅读 · 0 评论 -
串口——————朱老师物联网大讲堂
1.7.6.S5PV210串行通信接口详解31.7.6.1、串行通信与中断的关系(1)串口通信分为发送/接收2部分。发送方一般不需要(也可以使用)中断即可完成发送,接收方必须(一般来说必须,也可以轮询方式接收)使用中断来接收。(2)发送方可以选择使用中断,也可以选择不使用中断。使用中断的工作情景是:发送方先设置好中断并绑定一个中断处理程序,然后发送方丢一帧数据给transmitter,转载 2016-03-20 22:45:47 · 1536 阅读 · 0 评论 -
重定位——————朱老师的物联网大课堂
1.5.2.汇编写启动代码之设置栈和调用C语言11.5.2.1、C语言运行时需要和栈的意义“C语言运行时(runtime)”需要一定的条件,这些条件由汇编来提供。C语言运行时主要是需要栈C语言与栈的关系:C语言中的局部变量都是用栈来实现的。如果我们汇编部分没有给C部分预先设置合理合法的栈地址,那么C代码中定义的局部变量就会落空,整个程序就死掉了。我们平时在编写单片机程序(譬如51单片机转载 2016-03-17 12:49:33 · 1343 阅读 · 0 评论 -
ROM、RAM、DRAM、SRAM和FLASH的区别
ROM和RAM指的都是半导体存储器,ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为动态RAM(Dynamic转载 2016-02-21 01:33:54 · 533 阅读 · 0 评论 -
x210的启动过程
三星推荐的启动方式中 bootloader必须小于96KB并大于16KB,假定bootloader为80KB,启动过程是这样子:先开机上电后BL0运行,BL0会加载外部启动设备中的bootloader的前16KB(BL1)到SRAM中去运行,BL1运行时会加载BL2(bootloader中80-16=64KB)到SRAM中(从SRAM的16KB处开始用)去运行;BL2运行时会原创 2016-02-17 23:25:01 · 713 阅读 · 0 评论 -
ARM寄存器介绍
转自http://blog.sina.com.cn/s/blog_491f02870100hxna.htmlARM处理器模式用户模式(User):ARM处理器正常的程序执行状态快速中断模式(FIQ):用于高速数据传输或通道处理外部中断模式(IRQ):用于通用的中断处理管理模式(Supervisor):操作系统使用的保护模式数据访问终止模式(Abort):当数转载 2016-01-28 18:15:13 · 362 阅读 · 0 评论 -
看朱老师视频笔记-------C语言
一、内存 1、计算机程序=代码+数据2、冯诺依曼结构和哈佛结构冯诺依曼结构是:数据和代码放在一起。哈佛结构是:数据和代码分开存在。举例:在S5PV210中运行的linux系统上,运行应用程序时:这时候所有的应用程序的代码和数据都在 DRAM,所以这种结构就是冯诺依曼结构;在单片机中,我们把程序原创 2016-01-20 00:21:57 · 1336 阅读 · 0 评论 -
有没有设备可以测试电池的容量
TEC-06电池容量测试电子负载 镍镉镍氢锂电 移动电源检测仪原创 2015-10-26 19:49:32 · 854 阅读 · 0 评论 -
STM32自学笔记——UCOSIII
1、CPU_SR_ALLOC() 函数CPU_SR_ALLOC()是为CPU_CRITICAL_ENTER()和CPU_CRITICAL_EXIT()申请一个变量:#define CPU_SR_ALLOC() CPU_SR cpu_sr = (CPU_SR)0原创 2015-10-07 05:08:54 · 1828 阅读 · 0 评论 -
C 语言总结
1、关于static的使用在 C 中引入关键字 static 是为了表示退出一个块后仍然存在的局部变量, static 在 C 中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。------一个是和内存有关系,一个是和作用域有关系。原创 2016-05-07 00:43:37 · 231 阅读 · 0 评论 -
疑问:
ucos:1、互斥信号量中,初始的第一个信号量是在哪里来的呢原创 2016-08-28 13:20:23 · 368 阅读 · 0 评论 -
断言(ASSERT)的用法
我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由转载 2016-08-30 16:51:46 · 417 阅读 · 0 评论 -
ARM寻址方式
ARM寻址方式所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。ARM处理器的寻址方式目前ARM处理器支持9种寻址方式,分别是立即数寻址、寄存器寻址、寄存器偏移寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、相对寻址、堆栈寻址和块拷贝寻址。1. 立即数寻址也叫立即寻址,是一种特殊的寻址方式,操作数本身包含在指令中,只要取出指令也就取到了操作数。这个操转载 2016-07-27 11:32:54 · 551 阅读 · 0 评论 -
ARM的寻址方式
ARM寻址方式所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。ARM处理器的寻址方式目前ARM处理器支持9种寻址方式,分别是立即数寻址、寄存器寻址、寄存器偏移寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、相对寻址、堆栈寻址和块拷贝寻址。1. 立即数寻址也叫立即寻址,是一种特殊的寻址方式,操作数本身包含在指令中,只要取出指令也就取到了操作数。这个操转载 2016-07-27 11:32:31 · 12710 阅读 · 1 评论 -
一个很好的makefile例子(经典)
转自http://www.cnblogs.com/sld666666/archive/2010/04/08/1707789.html相信在unix下编程的没有不知道makefile的,刚开始学习unix平台下的东西,了解了下makefile的制作,觉得有点东西可以记录下。 下面是一个极其简单的例子:现在我要编译一个Hello world,需要如下三个文件:转载 2016-07-26 23:09:04 · 27973 阅读 · 2 评论 -
Modbus-RTU通讯协议中CRC校验码的计算步骤
在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算。CRC计算方法是:1、 预置1个16位的寄存器为十六进制FFFF(全1),此寄存器为CRC寄存器2、 把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的低八位相异或,吧结果存放于CRC寄存器。3、 把CRC寄存器的内容右移一位(朝低位)用0转载 2016-06-20 16:08:32 · 23178 阅读 · 0 评论 -
按键————————朱老师物联网大课堂
1.8.1.什么是按键1.8.1.1、按键的物理特性(1)、平时没人按的时候,弹簧把按键按钮弹开。此时内部断开的。(2)、有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通(闭合)状态;如果手拿开,则弹簧作用下按钮又弹开,同时内部又断开。(3)、一般的按键都有4个引脚,这4个引脚成2对:其中一对是常开触点(像上面描述的不按则断开,按下则闭合);一对是常闭触点(平时转载 2016-03-22 21:07:29 · 2417 阅读 · 0 评论