自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

toraloo的专栏

筑楼以石为基,行事以步为营。

  • 博客(47)
  • 资源 (10)
  • 收藏
  • 关注

原创 RTU固件中的“数据保险箱”——离线数据补发系统设计

本文介绍了一种专为RTU设备设计的"补发数据管理中间件"解决方案,解决了偏远山区水文监测中网络不稳定导致的数据丢失问题。该方案采用三层架构设计,在Flash存储上构建持久化FIFO队列,实现数据掉电不丢、断网暂存、网络恢复后自动补发。核心创新包括:1)1280字节定长数据块结构设计,平衡存储效率与扇区对齐;2)基于魔数和序列号的轻量级队列管理机制;3)软删除与原地复用策略减少Flash擦写;4)全盘扫描重建队列的可靠恢复机制。该组件已成功应用于山洪预警系统,有效保障了水文数据的完整性和可追溯性。

2026-07-06 13:36:56 396

原创 RTU多AT模块协同的工程实践:从代码复制粘贴到统一框架设计

本文介绍了一个针对Cortex-M4单片机的裸机AT指令中间件框架,通过将硬件抽象、状态机管理、指令队列调度、响应解析和URC处理五大机制模块化,解决了多AT模块并存时的代码冗余与维护问题。传统开发方式存在代码复制粘贴、状态混乱、阻塞死等七类问题,导致新增模块需重写大量代码。该框架通过分离变与不变的设计哲学,将通用逻辑封装为核心层,硬件差异以回调方式注入,使新增模块仅需注册三个回调即可快速接入。最终将原本40~50KB的重复代码收敛为约2020行可复用框架,显著提升开发效率与代码质量。

2026-06-24 00:20:06 312

原创 RTU固件中的“内存管理大师“—基于铁电存储器的命名空间动态管理模块

本文介绍了一种基于铁电存储器(FRAM)的RTU固件动态内存管理模块。该模块将FRAM线性地址空间抽象为可动态申请的"命名存储空间",通过类似文件系统的管理方式,使各业务模块可按名称读写数据而无需关心物理地址。核心设计包括:1) 四区域物理布局(写标志、管理头、空间表、数据区);2) 基于空闲链表的动态分配机制,采用最佳适应策略减少碎片;3) 双重防护的断电恢复机制,通过写标志和原子提交确保元数据一致性。该方案解决了传统SPI Flash擦写寿命短、管理复杂的问题,特别适合水文遥测终端等需要频繁更新小数据量

2026-05-21 14:06:25 376

原创 RTU固件升级配置丢失错乱终极解法:告别结构体字节偏移与FATFS掉电损坏的KV键值对设计

摘要:野外水文RTU设备的配置存储面临固件升级兼容性差、Flash空间利用率低等痛点。传统结构体方案存在线性布局与树状需求不匹配、扇区浪费严重等问题。本文提出基于SPI NOR Flash裸存储的键值对(KV)模型,通过动态分配存储空间、版本无关的键值映射,实现配置项独立管理。该方案避免了结构体方案的升级灾难,在太阳能供电不稳定环境下仍能可靠运行,解决了RTU长期维护中的配置存储难题。

2026-05-12 18:55:23 403

原创 unsigned char与unsigned char m_array[5]

#include int main(int argc, char **argv) { unsigned char ch_1 = '1'; unsigned long* ch; unsigned char m_array[5] = {0}; unsigned char test; test = sizeof(ch_1); ch = (unsigned long *)0x0012f

2013-11-01 22:45:31 3701 1

原创 stm32结构发展图示

2013-07-30 15:44:34 2301

原创 51下是简单的任务调度

此工程实现功能是为3个任务的切换运行与数码管动态显示,任务1:扫描获取按键值,然后通过串口发出对应的数据;任务2:控制led闪烁;任务3:控制蜂鸣器报警。 数据结构关联,如图1所示。Task_stack块由task1_stack、task2_stack、task3_stack三个数组组成,它们结构为0号元素保留,1号元素保存函数入口地址低8位,2号元素保存函数入口地址高8位。Task_sp块中

2013-07-02 12:41:13 2744

原创 操作系统内核框架图整理

Android框架: IOS框架(简): web_os框架: windows NT框架: Minix3框架: linux框架(简): Solaris框架: GNU_Linux_FOSS: linux框架(完整): 不管阅读哪一个系统的源码,最为关键的便是要对其大体的框架形成一个宏观的认识,才能更好的阅读其源码

2013-06-22 23:40:26 10137 1

转载 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete

相当好的一篇关于vim编辑器改造的博文。 转载文章地址:http://blog.csdn.net/bokee/article/details/6633193 ===================================================================================    工欲善其事,必先利其器。一个强大的开发环境可以大大提高

2013-04-17 23:34:46 1234

转载 mjpg-streamer移植

本文的copyright归yuweixian4230@163.com 所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。 作者:yuweixian4230@163.com 博客:yuweixian4230.blog.chinaunix.net   参考资料:http://blog.21ic.com/user1/4132/arch

2013-04-16 14:20:00 6493

原创 组合两链表,并拷贝至新链表中(C版)

时间渐渐紧张,只能在闲暇时间里写写这类的小程序,不断锻炼编程的思路: compera_list.h: #ifndef __COMPERA_LIST_H__ #define __COMPERA_LIST_H__ /* * list链表边界值设定 */ #define MAXSIZE_A 2 #define MAXSIZE_B 3 #define MAXSIZE_C 6 #in

2013-04-09 15:59:11 1102

原创 input输入子系统源码部分函数分析

/* * 源文件目录: * /drivers/input/input.c */ 入口函数: static int __init input_init(void) 1、 err = class_register(&input_class); /* class设备节点生成 */ 2、 err = input_proc_init(); /* 为添加到p

2013-04-09 15:28:36 1388

原创 用不同的思路去完成简单的C程序编写

头文件1:func_desc.h #ifndef __FUNC_DESC_H__ #define __FUNC_DESC_H__ #include #include #include #include "register_mod.h" #define NUMBER_XJ 2 struct class_attr; struct func_operations { void (*

2013-03-21 02:00:48 1131

原创 GT2440按键驱动添加fasync机制

完整驱动代码如下: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define

2013-03-04 11:40:12 990

原创 Ubuntu下的samba配置与使用

============================================================================= /* 一般网络流程 */ 1、sudo apt-get install samba smbfs  (samba下载与安装) 2、sudo smbpasswd -a XXXX (访问用户创建) 3、/etc/samba/smb.conf

2013-01-16 23:25:07 659

转载 Linux驱动修炼之道-SPI驱动框架源码分析(下)

转载自:http://blog.csdn.net/lanmanck/article/details/6895324 这篇文档主要介绍spi数据传输过程。 当应用层要向设备传输数据的时候,会通过ioctl向设备驱动发送传输数据的命令。如图,向SPI从设备发送读写命令,实际的读写操作还是调用了主机控制器驱动的数据传输函数。transfer函数用于spi的IO传输。但是,transfer

2012-12-28 13:04:58 635

转载 Linux驱动修炼之道-SPI驱动框架源码分析(中)

转载自:http://blog.csdn.net/lanmanck/article/details/6895322 这篇来分析spi子系统的建立过程。 嵌入式微处理器访问SPI设备有两种方式:使用GPIO模拟SPI接口的工作时序或者使用SPI控制器。使用GPIO模拟SPI接口的工作时序是非常容易实现的,但是会导致大量的时间耗费在模拟SPI接口的时序上,访问效率比较低,容易成为系统瓶颈。这里

2012-12-28 13:03:12 725

转载 Linux驱动修炼之道-SPI驱动框架源码分析(上)

近段时间正在进行一个SPI设备模块的学习,因而转载此篇文章。 转载自:http://blog.csdn.net/lanmanck/article/details/6895318 SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式。相关通讯设备可工作于m/s模式。主设备发起数据帧,允许多个从设备的存在。每个从设备 有独立的片选信号,SPI一般来说是四线串

2012-12-28 12:59:58 704

原创 GT2440下Mplayer的移植

此篇文章的真正出处,我未能找到;此文所提要点涵盖了基本移植是会出现的问题。可说是现网络中移植Mplayer非常好的文档;我花费了将近一天的时间把Mplayer移植到GT2440下,如早找到此篇文章就不会花费那么长的时间。先网络上的大量关于Mplayer的移植文档,都有着存在着编译会出现的问题并不能交代清楚的问题。 =========================================

2012-12-18 00:24:12 987

原创 GT2440下madplay的移植

********************************************************************* **实验目标:madplay 的移植 **日期:2012/12/16 **执行人:ToraLoo ********************************************************************* tool v

2012-12-17 16:09:31 1915

原创 一个制作“图种”的小程序

今天翻东西的时候,不小心翻到了我上学期,练习文件编程时写的小程序了。感觉有玩头,于是乎就共享出来了。至于“图种”是什么我们不去关心它,就理解成两个不同格式的文件合并就行了(其实经常用cmd的同学肯定会想到copy命令)。写这个程序主要目的还是在于练习文件编程,这也是一个有一定可玩性的小程序。呵呵......... 程序运行截图: 源码与程序下载地址:http://download.cs

2012-12-16 02:02:58 1487

原创 加密与解密小软件

编译环境:VC++6.0 软件包包含: Etora.txt:作者信息与软件描述; Ecryption.exe:主加密与解密软件; PE_KeyCreate.exe:壳密钥加密软件; Encryption与PE_KeyCreate使用手册.doc:为说明文档; 此两个软件使用起来不怎么方便,但是可增强对算法与文件操作编程的锻炼,是一个比较好的练手例程。 软件包下载地址:ht

2012-12-14 20:23:59 745

原创 基于STC12C5A60S2多功能MP3设计

核心主控:STC12C5A60S2 晶振频率:22.1184MHz 触屏主控:ILI9320 触屏转换主控:TSC2046 MP3模块主控:VS1003 收音机模块:TEA5767 设计中含两个菜单目录,划屏即可进行第一与第二屏的切换;第一屏内容与数码相框相同,只是将setting图标内容修改为: System图标内容跟换: 第二屏菜单:

2012-12-04 19:36:23 2457

原创 基于STC12C5A60S2的嵌入式数码相框设计

核心主控:STC12C5A60S2 晶振频率:22.1184MHz 触屏主控:ILI9320 触屏转换主控:TSC2046 功能与界面展示(比较简朴): 系统启动界面: 主界面: 点击Docment图标后: 点击任意选项之后(此处的“文件目录显示”为系统名字的显示): 点击Photos图标后: 点击任意item之后: 点击Dra

2012-12-04 00:03:25 2613

原创 Petit FatFs文件系统移植至STC89C52RC

MCU:STC89C51RC 最高主频:80M Flash:4K SRAM:512B EEPROM:4K 系统:Petit FatFs 集成开发环境:keil 4 今天将Petit FatFs成功挂载到STC89C52RC芯片上进行运行,实话说这样做的意义并不是很大,尤其是在你对petit fatfs文件系统代码并不是很了解的情况下。在你并不是很了解p

2012-10-28 23:49:07 5107

原创 uc/os-II在STC89C52RC上的移植

MCU:STC89C51RC 最高主频:80M Flash:4K SRAM:512B EEPROM:4K 系统:uc/os-II 集成开发环境:keil 4 在起初开始移植时我并没有注意到上面的Flash、SRAM这两个指标的限制,导致移植一直无法成功。最终在starup.a51中对XBPSTACKTOP进行了修改,从而得以运行成功。修改原因主要为一开始XBPSTACKTOP初始

2012-10-27 18:02:39 3042

转载 Bresenham快速画直线算法

转载博文原址:http://www.cnblogs.com/pheye/archive/2010/08/14/1799803.html 算法原理的详细描述及部分实现可参考: http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html     Fig. 1    假设以(x, y)为

2012-09-12 00:34:23 632

原创 关于一句话的乱想

这句话就是:One more time,One more chance... 一天前,看到一朋友的QQ签名改成了上面的那句话。也使得自己想起了以前不少的事情,想了一会觉得反正都想起了那就下一下以这句话作为主题曲名字的《秒速5cm》来重温重温算了。 看完《秒5》后,感觉心里很不是滋味。男主的在不同时期经历的感情事件,总给我一种感觉好像原来自己也是这样经历过来的,真是奇怪(呵呵...-_-....

2012-09-02 01:57:43 633

转载 图解ARM Linux的启动全过程

作者:ce123 转载博文地址:http://blog.csdn.net/ce123/article/details/7526408 图解ARM Linux的启动全过程 图解ARM-Linux的启动全过程:内核自解压阶段—>内核引导阶段—>内核初始化阶段—>BusyBox初始化阶段。 图片有点大,打开的时候比较慢。大家可以免费下载http://download.csdn.net

2012-09-01 19:34:39 669

原创 关于ubuntu-12.04的安装

系统版本:ubuntu-12.04.1-desktop-i386 安装环境:vmware workstation 安装完成后会进入如下命令行界面: 要启动图形界面则需要输入:startx Root用户的切换:sudo -s (安装完成后ubuntu-12.04无声音,待解决中.......) 同时我也在网上找到了一本叫好的ubuntu-12.04上手教材,网站如下:ht

2012-08-25 00:36:11 912

转载 GPIO驱动相关笔记

这篇文章是我看过的讲解GPIO驱动程序最为详细的文章故将其转载;看了此篇文章后也让我看到了,学习驱动应该想博主那样学才是真正的学驱动。    我尝试了使用ctrl+c加ctrl+v打法后,感觉文章出来的效果很差;    所以决定给出,转载博文的链接地址(相当值得看的文章):http://blog.csdn.net/llxmedici/article/details/6282372

2012-08-14 16:46:32 671

原创 写Makefile粗心的后果

其实,很多人都想搞嵌入式的驱动开发,也会去买各种各样的书籍来研究;书上的驱动程序讲的有理有据、仅仅有条,说的你心悦诚服然后你就会跟别人说“没错一个led驱动就是这么写的,对不会有错的!“,哎,显然我也是这种人(呵呵....);所以,当我第一次尝试把我原来写好(写好的代码指并未编译;也就是说连Makefile都没写的那种)的认为一定不会有问题的驱动程序搞到我够买的GT2440开发上去运行,之后才让我

2012-08-14 16:36:17 16754

原创 51mini板整板测试程序

最近几天朋友一时兴起,居然买了块51最小板来玩;我按他的最小系统板电路绘制了一张仿真图,并设计了一个通过串口调试整板资源的测试程序;其中使用了printf()和getchar()等函数;同时在使用这类函数的基础上也使用的串口中断,个人感觉在使用printf()函数时再开启串口中断其实也是可行的。 仿真电路: 串口测试界面: 源码下载(包涵仿真电路图):http://downloa

2012-08-12 00:44:55 1061

原创 busybox编译错误解决

Busybox版本:1.16.0 Arm-linux-gcc版本:3.4.1 系统:ubuntu 10.10 编译时出现错误: 1、fatal error: curses.h: 没有这个文件或目录 原因:ubuntu系统中缺少一个套件 ncurses devel  解决方法:apt-get install libncurses5-dev 2、O_NOATIME未定义 coreu

2012-08-06 01:25:30 2812

原创 GT2440--U-Boot分析(四)

run_command()分析: int run_command (const char *cmd, int flag) { cmd_tbl_t *cmdtp; char cmdbuf[CFG_CBSIZE]; /* working copy of cmd */ char *token; /* start of token in cmdbuf */ char *sep; /

2012-08-02 06:33:58 2271

原创 GT2440--U-Boot分析(三)

第二阶段:board.c 入口:start_armboot(void) typedef int (init_fnc_t) (void); void start_armboot (void) { init_fnc_t **init_fnc_ptr; /* 用于调用初始化队列下的初始化函数 */ char *s; /* 指向获取的环境变量 */ #ifndef CFG_NO_FL

2012-08-02 06:07:55 1928

原创 GT2440--U-Boot分析(二)

Step3: U-Boot源码分析: 第一阶段:  硬件设备初始化 为加载Bootloader第二阶段代码准备RAM空间 复制Bootloader第二阶段代码到RAM准备好空间中 设置栈 跳转到第二阶段的C代码; 第二阶段: 初始化本阶段使用到的硬件设备; 检测系统内存映射; 将内核映像和根文件系统映像从Flash上读到RAM中; 为内核设置启动参数; 调用内核; 第

2012-08-02 06:00:18 1711

原创 GT2440--U-Boot分析(一)

U-Boot版本:1.1.6 单板:GT2440 U-Boot源码目录: 从目录下文件夹名称应该可大概了解到每个文件夹下的代码作用; Step1: U-Boot编译:  1、配置                       2、make 配置:make GTStudio_config Make:make ’ ’|all > 关于u-boot的编译与约定详见:ROA

2012-08-01 23:54:01 2067

原创 Bootloader分析

Bootloader目的初识: 1、加载内核 2、启动内核 Bootloader目的(功能)细化分析: 1、硬件初始化; 2、准备软件环境; 3、启动内核; Bootloader启动方式: MIPS结构下第一条启动指令地址为:0xBFC00000 ARM结构下第一条启动指令地址为:0x000000000 Bootloader启动模式: 1、启动加载模式(用于成品);

2012-07-30 23:47:32 1340 2

原创 C51下汇编的嵌入

(1)、C51语言中调用汇编语言程序; C51语言调用汇编语言程序要注意以下几点: 1:在文件栏选中File Group和C51程序原文件,在配置文件选项中激活“产生汇编(SRC)文件,“编译(SRC)文件”和“创建工程(目标)时包含”三个选项。 2:根据选择的编译模式,把相应的库文件(如SMALL模式,库文件为KEIL\C51\LIB\C51S.LIB)加入工程中。 3:在C51语言中必

2012-07-28 00:38:30 7718

ubuntu-12.04菜鸟使用教材

适合从未接触过ubuntu的新手教程; 教材中含如何更新软件包; 在Ubuntu下安装游戏; 在ubuntu下运行QQ2012;等等内容...

2012-08-25

从单片机初学者到单片机工程师

单片机工程师; 初学到精通; 系统科学的单片机编程方法;

2012-09-01

Petit FatFs移植到STC89C52RC

Petit FatFs移植到STC89C52RC 移植成功、框架搭建完成; 功能有下载者自行完善。

2012-10-28

嵌入式数码相框设计

基于:STC12C5A60S2 嵌入式数码相框 文件系统 GUI设计 触摸屏设计

2012-12-03

51整版测试程序

51最小系统板基于串口的整板测试程序。 1、各类常见led的操作; 2、数码管60进制加减计算器; 3、串口通信测试; 4、独立、矩阵按键测试

2012-08-12

VC6.0加密程序

VC++6.0控制台编程; 加密与解密算法设计; 文件多种操作;

2012-12-14

cmd模拟小程序

VC++6.0 多进程创建 cmd运行环境模拟 控制台颜色编程

2012-12-04

bad_apple(演示版)

bad apple character C版

2013-04-14

图种制作小程序

VC++6.0环境编程 控制台字体颜色编程 不同格式文件合成 如.jpg与.rar文件合成等等...

2012-12-16

51简单任务切换器

一个3任务的基于51平台下的简单任务切换器设计,这个有调度器的感觉但是相对调度器而言这个就简单了太多。

2013-07-02

空空如也

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

TA关注的人

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