自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 Cortex-M3 双堆栈指针(MSP&PSP)

【双堆栈指针(MSP&PSP)】 Cortex-M3内核中有两个堆栈指针(MSP & PSP),但任何时刻只能使用到其中一个。 复位后处于线程模式特权级,默认使用MSP。 通过SP访问到的是正在使用的那个指针,可以通过MSR/MRS指令访问指定的堆栈指针。 通过设置CONT...

2019-12-27 10:02:32 454 0

原创 GCC连接器--动态库(Shared Library)中 PLT 和 GOT 的使用机制

PLT (Procedure Linkage Table) 和 GOT (Global Offset Table) 是 GCC 中生成shared library的重要元素。至于为何一定要这两个表? GOT的功用 以gcc內建的libc.so 为例,因为你不可能用到libc.so 里面所有的函...

2019-12-19 15:04:00 201 0

原创 STM32-移植FATFS的NANDFLASH驱动

1,在http://elm-chan.org/fsw/ff/00index_e.html上下载ff007c.zip,并把ff007c.zip里面的 src文件夹复制到D:\works\EK-STM3210E-UCOSII下,并改名为Fatfs; 2,在IDE工程中右击选择“Add Group”建立...

2019-10-21 11:39:42 344 0

原创 Nand flash基本原理

 1. 闪存存储单元   对于闪存,我们常见的有SLC和MLC两种,细分还有eSLC和eMLC等,因为闪存式一种电压元件,因此它是以不同的电压范围来代表不同的数据,现在看看两者之间的区别。   1) SLC(single-level cell):单阶存储单元,也就是闪存的每一个存储单元存储1bi...

2019-10-21 11:23:50 221 0

转载 fatfs结构及源码分析。

目录 一、API的函数功能简述 二、FATFS主要数据结构   1、FAT32文件系统的结构   2、FATFS主要数据结构     ①FATFS     ②DIR     ③FIL     ④ FILINFO     ⑤win[512]     ⑥buffer 三、函数功能...

2019-10-11 15:21:39 151 0

转载 STM32的ITM跟踪调试功能介绍及实现(一)KEIL篇

ITM,(英文:Instrumentation Trace Macrocell,指令跟踪宏单元),是一种针对MCU进行跟踪调试的新方法,与打断点(Breakpoint)不同,ITM方法不需要暂停程序运行,可以在程序全速运行的过程中实时输出变量的数值以便观察,即Trace功能。对于有一定产品开发经验...

2019-10-11 09:26:47 727 0

原创 uC/OS任务创建函数OSTaskCreate ()参数详解

要使用uC/OS的任务必须先声明任务控制块和创建任务,调用OSTaskCreate ()函数可以创建一个任务。OSTaskCreate ()函数的信息如下表所示。

2019-06-26 09:57:31 1629 0

转载 f_sync解决fatfs文件掉电数据丢失问题

临界段 When write operation to the FAT file system is interrupted due to any accidental failure, such as sudden blackout, incorrect disk removal and un...

2019-03-14 16:57:45 555 0

原创 Fatfs 函数功能简介

【文件系统将对文件的块的操作转换为对物理存储器扇区的各种操作】   FatFs是一个通用的文件系统模块,以小的嵌入式系统的FAT文件系统。 FatFs的编程遵守的ANSI C格式语法标准,因此,它是具有独立于硬件架构。 在不做任何改变就可以被移植到常用的微控制器中,如8051, PIC, AVR...

2019-01-23 11:38:58 1048 0

原创 网口扫盲三:以太网芯片MAC和PHY的关系

问:如何实现单片以太网微控制器? 答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件.这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积.单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下. ...

2018-12-05 16:10:59 570 0

转载 stm32之can总线过滤器的标准帧、扩展帧、远程帧等

stm32的can总线的配置如下:       CAN_InitStructure.CAN_TTCM=DISABLE;//禁止时间触发通信模式       CAN_InitStructure.CAN_ABOM=DISABLE;       CAN_InitStructure.CAN_AWUM...

2017-06-02 18:28:25 6043 2

转载 CAN通信详解

本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 30.1 CAN简介 CAN 是Controll...

2017-04-11 16:59:34 37519 0

原创 FATfs文件系统移植-文件更改记录

FatFS是一种开源的文件系统格式,移植方便,容易使用。最近开始玩STM32,玩到了SD卡部分,准备移植FatFS到SD卡上并解决驱动问题,一开始使用的是SPI带SD卡,这部分解决后就可以再着手进行SDIO模式。下面是关于FatFS文件系统移植需要的几个关键文件:   ff.c(不动) 文件系统...

2017-04-10 14:22:36 606 0

原创 Linux 文件系统理解

1.ext2文件系统整体布局 一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。下图是一个磁盘分区格式化成ext2文件系统后的存储布局。 or如下第二种图(追加的图ha...

2017-03-24 09:22:27 906 0

原创 STM32 GPIO管脚配置意思说明

1        STM32205XX系列每个通用I/O 口都 1) 有4 个32 位配置寄存器 (GPIOx_MODER,GPIOx_OTYPER, GPIOx_ OSPEEDR 和GPIOx_PUPDR), 2)2 个32 位数据寄存器(GPIOx_IDR and GPIOx_ODR) 3...

2016-12-23 15:42:11 1539 0

转载 SD 移植fatfs文件系统

为SPI FLASH移植fatFs文件系统心得 (二) 喻时耕宇 1 年前 今天算是移植成功了,由于下载的是最新的fatFs,网上资料基本都是以前的系统。有些地方还是改动比较多的,这里全部列出来。 FRESULT f_mkfs ( const TCHAR* path, /* ...

2016-12-09 11:08:21 725 0

转载 FATfs源码解析

一、介绍: 本文以网上开源文件系统FatFs 0.01为研究对象,剖析FatFs文件系统的核心操作。FatFs目前最新版本已更新到0.10a版本,而我之所以选择0.01版本,是因为这是最早的发布版本,与最新的版本相比,去掉了很多高级应用,且代码量相对较小,宏开关也少了许多,易于阅读和理解,用来研...

2016-11-03 16:17:05 1284 0

转载 uCOS时钟节拍和滴答定时器的关系

在使用uCOS时,有一个非常重要,非常关键的概念就是操作系统的时钟节拍,uCOS的时钟节拍来源于滴答定时器,滴答定时器按照设定的时间不停的计时和产生中断,在uCOS-III中滴答定时器的中断服务函数如下: void OS_CPU_SysTickHandler (void) { ...

2016-09-19 13:41:13 1439 1

转载 keil开发环境增加Gnu扩展

不得不说Keil貌似是国内用户使用最多的IDE了,其被ARM收购之后,ARM嵌入了ARMCC等编译器推出了Keil MDK开发环境更是受到了广大ARM开发工程师的欢迎,庞大的用户群(很多是从当年的51等8位机直接转过来的)、简洁的管理窗口和友好的UI界面等优势都让其风靡一时,而且毕竟现在成了AR...

2016-06-15 11:46:05 2170 0

转载 C语言一些常用的“位”操作函数

这些函数操作“位”,经常用到: [cpp] view plain copy print? //将双字节中某一位置位   void SetN1(unsigned short *pBuf, int n)  {      (*pBuf) |= 1}    //将双字节中某...

2016-02-18 19:12:34 1182 0

原创 stm32 中DMA的stream和channel关系

问:STM32(意法)DMA中的stream和channel到底什么关系和区别? 答:拿stm32的DMA1做例举。DMA1中总共有8个stream,而每个stream可以配置成不同的传输源和目的地址,这就是channel。1个不同的源和目的就叫1个channel。如下图所示: 上图中st...

2015-09-18 17:20:29 4364 1

转载 你所不知道的TCP/IP传输层

PS.老规矩,列出可能遇到的20个问题,如果您是都能回答的高手,请您绕道,我是小菜,只做自己的学习笔记。   1. 传输层的主要功能是什么? 2. 传输层如何区分不同应用程序的数据流? 3. 传输层有哪些协议? 4. 什么是UDP协议? 5. 为什么有了UDP,还需要TCP? 6. 什么是TC...

2015-08-17 11:10:18 704 0

转载 vmware三种连接方式Bridge、Host-Only模式和NAT模式

本地连接:是本机用Bridge方式与虚拟机交互时使用的主机网卡; VMware Network Adapter VMnet1:是本机用Host-Only方式与虚拟机交互时使用的虚拟网卡; VMware Network Adapter VMnet8:是本机用NAT方式与虚拟机交互时使用的...

2015-03-22 20:57:45 1099 0

转载 libxml2库函数详解

许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能。下面的列表列出了libxml的主要函数及其用法说明。 1.   全局函数说明 头文件引用 xml2config --cflags 库文件引用 ...

2015-01-09 17:06:32 12214 1

转载 socket绑定INADDR_ANY,那会怎样?(例如:双通机房多网卡多IP设置)

我也回复一个!! 其中INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般情况下,如果你要建立网络服务器,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的...

2015-01-06 13:03:46 2775 0

转载 linux线程的取消(终止)

关键: pthread_cancel函数发送终止信号 pthread_setcancelstate函数设置终止方式 pthread_testcancel函数取消线程(另一功能是:设置取消点) 1 线程取消的定义 一般情况下,线程在其主体函数退出的时候会自动终止,但同时也可...

2014-12-30 10:32:07 10762 0

原创 CAN总线疑惑与解答

1    CAN总线2根数据线是怎么表示数据信息1和0的? Can总线采用差分数据表示方法,平时2个数据线为2.5V,表示隐性(1)。当用数据0(显性)需要发送时1跟数据线上升到3.5V另一个下降到1.5V。如图a所示 所有节点都连接到这两根数据线,当所有节点都发送数据为隐性时总线数据才表示为隐...

2014-12-01 11:29:30 4112 0

原创 TCP/IP各个层功能

1.TCP/IP协议族四层(ISO是七层)   应用层    传输层(TCP/UDP)    网络层(IP)    数据链路层   2.链路层:链路层包括电缆和驱动,主要功能包括按帧收发数据、比特差错控制重传。 3.网络层:也就IP层,主要功能包括IP路由选择、数据分片(根据链路层M...

2014-11-21 11:37:29 1025 0

转载 SQlite在PC和ARM上的编译移植

SQlite是一个开源的嵌入式数据库,至于它的特性和性能,这里就不介绍了,google上很多介绍了。SQlite是很受欢迎的一个小型的数据库,现在手机上的两大操作系统ios和android上都是用它,足以见它的分量了吧。     PC端的平台是ubuntu 11.04 . ARM的平台是S3...

2014-11-19 13:04:04 527 0

转载 volatile陷阱

对于volatile关键字,大部分的C语言教材都是一笔带过,并没有做太过深入的分析,所以这里简单整理了一些关于volatile的使用注意事项。实际上从语法上来看volatile和const是一样的,但是如果const用错,几乎不会有什么问题;而volatile用错,后果可能很严重。所以在volat...

2014-11-14 11:44:24 519 0

转载 volatile陷阱

对于volatile关键字,大部分的C语言教材都是一笔带过,并没有做太过深入的分析,所以这里简单整理了一些关于volatile的使用注意事项。实际上从语法上来看volatile和const是一样的,但是如果const用错,几乎不会有什么问题;而volatile用错,后果可能很严重。所以在volat...

2014-11-14 11:32:12 69 0

原创 gdb调试不显示代码的原因

我们从一个最简单的C语言程序开始。源文件main.c在 用户目录gdb文件夹下。 florian@florian-pc:~/gdb$ cat main.c int main() {     return 0; }; 然后将源文件编译为main(需...

2014-09-26 13:25:25 12302 3

原创 ARM gdb调试工具安装

arm-linux的gdb移植分为两种情况.一种是交叉调试版。这一种模式是需要编译一个arm-linux版本gdbserver (GDB的stub模块).然后再编译一个X86版本交叉调试的gdb.为了与桌面版本身的gdb 区别开来,一般改名为 arm-linux-gdb。两者通过串口或者网络进行互...

2014-09-05 10:11:42 3288 0

原创 sizeof和strlen 比较经典

下面是网上的一个比较经典的例子,分析一下:   char *c="abcdef"; char d[]="abcdef"; char e[]={'a','b','c',...

2014-09-03 14:23:03 989 0

转载 tcp/ip协议各个层作用

从协议分层模型方面来讲,TCP/IP由四个层次组成:数据链路层、网络层、传输层、应用层 一、数据链路层 数据链路层是负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 传输有地址的帧以及错误检测功能 。         一、流量控制,有基于反馈的流控制盒...

2014-07-01 14:51:12 8131 0

原创 linux 内核链表解析2

我用一个程序来说明在struct person 中增加了struct list_head 变量后怎么来操作这样的双向链表。   [cpp] view plaincopyprint? #include     #include "...

2013-12-19 17:28:50 698 0

原创 linux 内核链表解析1

前言: 在linux 源代码中有个头文件为list.h 。很多linux 下的源代码都会使用这个头文件,它里面定义了一个结构, 以及定义了和其相关的一组函数,这个结构是这样的:   struct list_head{ struct list_head *next, *prev; };  ...

2013-12-19 17:27:21 782 0

原创 字节序转换宏

关键是big endian和little endian的概念。注意16bit机器和32bit机器(以32位为访问单位)下排列不同。 内存地址从低地址向高地址增长,big endian是高位数据优先,即高位放在低地址。而little endian是低位数据优先,低位放在低地址。网络字节序采用大端。...

2013-11-26 09:19:36 2191 0

原创 函数指针

函数指针的声明方法为: 函数类型 (标志符指针变量名) (形参列表); 注1:“函数类型”说明函数的返回类型,“(标志符指针变量名 )”中的括号不能省,若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如: int ...

2013-07-12 17:20:03 875 0

原创 U-Boot启动过程完全分析(uboot启动2个阶段的分析)

1.1       U-Boot工作过程   U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:        (1)第一阶段的功能 Ø  硬件设备初始化 Ø  加载U-Boot第二阶段代码到RAM空间 Ø  设置好栈 Ø  跳转到第二阶段代码入口        (2)第二阶段的功能...

2013-07-09 16:14:45 5382 1

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