嵌入式开发
文章平均质量分 54
无尽V深海
这个作者很懒,什么都没留下…
展开
-
MISRA C 一点总结
2.语言扩展2.1 汇编语言应该通过a.汇编函数,b.C函数,c.宏三种方式封装并隔离汇编指令; 例如#define NOP asm(" NOP");2.2 源代码应该使用/*...*/类型注释,而不是使用 这样C99类型和C++类型的注释,其作为对C90的扩展;2.3 字符//* 不应该出现在注释中,因为C不支持注释的嵌套;2.4 当源代码段不需要被编译时,应当使用条件编译完成例如#i...原创 2020-04-12 16:38:58 · 629 阅读 · 0 评论 -
Qt之Sqlite3 Insert优化
最近在项目遇到一个问题,就是插入大量数据时启动程序会特别卡,一开始我使用线程缓解了一点,但是仍然会卡很久,今天在复习Sqlite相关内容时,突然发现了一个与我很相似的情况。究其主要原因还是执行INSERT语句时还有很大问题。在Sqlite官网关于INSERT的方式中INSERT过程中最后如果使用VALUES那条路会比select-stmt和DEFAULT -VALUES多走很多路,可能这样就导...原创 2019-07-31 19:43:30 · 899 阅读 · 0 评论 -
MISRA C 规范和 C语言的一些标准
MISRA C规范2.语言扩展2.1 汇编语言应该通过a.汇编函数,b.C函数,c.宏三种方式封装并隔离汇编指令; 例如#define NOP asm(" NOP");2.2 源代码应该使用/*...*/类型注释,而不是使用//这样C99类型和C++类型的注释,其作为对C90的扩展;2.3 字符/*不应该出现在注释中,因为C不支持注释的嵌套;2.4 当源代码段不需要被编译时,...原创 2019-04-09 09:09:44 · 1678 阅读 · 0 评论 -
Linux驱动开发常用头文件
#include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件。#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include <mach/***.h> 是在linux-2.6.29/arch/arm/mach-s3c2...转载 2018-10-17 10:58:38 · 182 阅读 · 0 评论 -
友善之臂mini2440初入门学习的一点历程
许久之前在某宝入手一块二手mini2440开发板,因为忙毕业设计也没空玩玩,这几天在等PCB印刷出来的时间拿出来学习一下。第一步配置好开发环境:交叉编译器,使用的是友善之臂光盘里的arm-linux-gcc-4.4.3.tar.bz,VMware 装的是ubuntu 1404,但是一直不成功,好像是1404版本有点bug,也尝试过arm-2009q3, 后来索性重新装了ubuntu 160...原创 2018-09-21 14:22:09 · 6861 阅读 · 1 评论 -
mini2440开发板-led驱动学习
mini2440烧录进自己配置的内核镜像,commandlines,文件系统,superboot,启动开发板后led一直在按照顺序闪灭,怀疑是led的程序自启动了。[root@FriendlyARM bin]# cat /etc/init.d/rcS 打开脚本后发现有段代码启动led脚本sleep 1/etc/rc.d/init.d/leds startecho " ...原创 2018-09-24 20:54:15 · 361 阅读 · 0 评论 -
Linux下连接脚本lds的一点总结(转载部分)
近期在翻看嵌入式应用开发完全手册中MMU一章中,有一段Makefile代码中使用了lds文件,其Makefile和lds脚本代码分别如下:objs := head.o init.o leds.ommu_bin:$(objs) arm-linux-ld -Tmmu.lds -o mmu_elf $^ arm-linux-objcopy -O binary -S mmu_elf...转载 2018-09-05 11:35:19 · 824 阅读 · 0 评论 -
Modbus ascii模式 规约转换小结
想要实现规约转换必须先得理解modbus rtu/ascii/tcp 规约. 我吃了这个亏,一开始就专注于小组的代码, 导致看了半天云里雾里, 随开始找资料, modbus规约那份pdf可以看看, 理解三点:(1) 上下行报文的概念 (2) 正常报文和异常报文 (3) RTU/ASCII报文帧之间的差别. 前面一点那份文档一点没提, 对我这种刚入行的人来说看起来不知所云. 关于理解ASCII模...原创 2018-04-27 17:13:46 · 1491 阅读 · 1 评论 -
Modbus ASCII模式下的LRC校验算法
在发送报文到平台后重新将数据组织LRC校验码,但是使用Modbus规约文档上给的代码总是与发送报文的校验码不符, 查资料可知LRC校验码的算法有两种,实现起来也很简单.但是却不对.因为这些都是一个字节的, 但是发送报文中其实是两个字节的校验码,其高位在后,低位在前! 这与前面几段数据不同,需要注意下.没办法, 网上的资料虽多,但是能用的也寥寥. 不过有两份资料还是说明出问题的要害, LRC校验C...原创 2018-05-04 17:52:57 · 8265 阅读 · 1 评论 -
modbus ascii报文转换
在现有项目中增加modbus ascii报文的支持,因为项目中已经有了RTU和TCP报文的支持,所以想讲ascii报文转换成类似rtu的报文格式,利用RTU的函数处理,节省代码量. 根据RTU报文和ASCII报文的特点, 从该博文可以看出https://blog.csdn.net/windytop/article/details/45717655?locationNum=2 ,所以我是用一...原创 2018-04-24 10:58:46 · 4797 阅读 · 2 评论 -
Qt的mysql驱动失效的解决
写完上位机程序之后运行一直出错:QSqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7百度后发现这种情况也有不少人发生过,有文章说需要重新编译一下Qt的mysql驱动,并按照之,在编译过程中出错,原创 2017-11-21 15:10:35 · 330 阅读 · 0 评论 -
源码阅读——十个C开源项目(转载)
代码阅读——十个C开源项目1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/转载 2016-10-10 21:49:56 · 614 阅读 · 0 评论