现在位置: 首页 > 技术文章 > 文章
2017年06月03日 裸机开发 ⁄ 共 254字 暂无评论 ⁄ 阅读 21 次
在一个项目中,使用了STM32,数据结构比较复杂,采用动态内存分配,一开始程序运行老是异常,调试查找原因,发现是使用malloc分配内存空间时不成功造成的,经分析原因在于Startup_stm32fxx.s文件中定义的堆空间太小导致的,如下图: malloc 因为malloc是在堆空间中分配内存,设置的大小小于需要分配的空间是肯定是要失败的,我把堆大小改为10K就OK了。
阅读全文
2016年09月23日 基础知识 ⁄ 共 1618字 评论 1 条 ⁄ 阅读 728 次
LVDS是一种低摆幅的差分信号技术,它使得信号能在差分PCB 线对或平衡电缆上以 几百Mbps的速率传输,其低压幅和低电流驱动输出实现了低噪声和低功耗。 IEEE 在两个标准中对LVDS 信号进行了定义。ANSI/TIA/E IA -644 中,推荐最大速率为 655Mbps ,理论极限速率为1.923Gbps 一、LVDS组成 lvds LVDS 信号传输一般由三部分组成:差分信号发送器,差分信号互联器,差分信号接收器。 差分信号发送器:将非平衡传输的TTL 信号转换成平...
阅读全文
2016年08月25日 基础知识 ⁄ 共 3326字 暂无评论 ⁄ 阅读 534 次
处理器基本上会按照程序中书写的机器指令的顺序执行。按照书写顺序执行称为按序执行(In-Order )。按照书写顺序执行时,如果从内存读取数据的加载指令、除法运算指令等延迟(等待结果的时间)较长的指令后面紧跟着使用该指令结果的指令,就会陷入长时间的等待。尽管这种情况无可奈何,但有时,再下一条指令并不依赖于前面那条延迟较长的指令,只要有了操作数就能执行。 此时可以打乱机器指令的顺序,就算指令位于后边,只要可...
阅读全文
2016年03月01日 基础知识 ⁄ 共 1782字 暂无评论 ⁄ 阅读 811 次
柔性数组 在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间,例如: typedef struct test { int a; double b; char *p; }; p指向字符串。这种方法造成字符串与结构体是分离的,不利于操作。如果把字符串跟结构体直接连在一起,不是更好吗?于是,可以把代码修改为这样: char a[] = "hello world&...
阅读全文
2016年02月25日 基础知识 ⁄ 共 1730字 暂无评论 ⁄ 阅读 614 次
采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。 如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TCP协议层实现的Keepaliv...
阅读全文
命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如ARM,MIPS vendor - 工具链提供商 os - 目标操作系统 eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface) 根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如 arm-none-eabi:这个是没有操作系统的,自然不可能支持那些跟操作系统关系密切的函数,比如fork(2)。他使用的是newlib这个专用于...
阅读全文
2016年01月15日 驱动开发 ⁄ 共 655字 暂无评论 ⁄ 阅读 559 次
温习完linux设备模型,今天打算使用平台总线来操作一下LED,下面说一下实验步骤及现象: 包含的文件总共有四个,驱动相关的有3个: 1.led_dev.c 2.led_drv.c Makefile 测试用的应用程序有一个: led_test.c 下面开始编译代码: 平台总线测试 如上图所示,编译出驱动程序及测试程序,然后拷贝到开发板上去。 下面开始做实验: 1加载驱动程序: 加载驱动 上图可以看到,刚加载完设备之后什么也没有打印出来,加载完驱动程序之后打...
阅读全文
2016年01月13日 驱动开发 ⁄ 共 6169字 暂无评论 ⁄ 阅读 560 次
最近在温故Linux的总线设备驱动模型,下面分析一下bus_register的详细调用过程及行为目的: kobject,kset,ktype。这三个结构联合起来一起构成了整个设备模型的基石,请看下面两篇文章: 《设备模型之kobject,kset及其关系》 《设备模型之总线,驱动,设备》 devices_ket和driver_kset 上图说明了总线通过两个数据结构:devices_ket和driver_kset来管理注册在此总线上的所有的设备和驱动,为了方便遍历,linux增加了klist_devi...
阅读全文
2016年01月11日 驱动开发 ⁄ 共 1753字 暂无评论 ⁄ 阅读 589 次
Kobject,kset是设备模型的基本结构体,设备模型使用这两个结构体来完成设备的层次关系,但在实际的设备驱动编写中,我们基本上用不到kobject,kset这些结构体,是因为这些结构体又被嵌入到更大的结构体中,原因在于kobject,kset结构体只能表征设备的层次关系,但是一个设备的驱动,并不是简单的一个层次关系而已,因此,必需要把kobject,kset结构体嵌入到更大的结构体中,使用kobject,kset来表征层次关系,用其他的成员表示设...
阅读全文

×