嵌入式C/C++程序设计
hongchunhua
这个作者很懒,什么都没留下…
展开
-
嵌入式C语言总结
<br />这几天花了两天时间看了一些嵌入式C语言方面的内容,以下是一些读书笔记,记录一下。<br /> <br />中断服务程序<br />1、不能有返回值<br />2、不能向ISR传递参数<br />3、ISR尽可能的短<br />4、Printf有重入问题<br /><br /><br />硬件驱动模块<br />1、中断服务程序ISR<br />2、硬件初始化<br /><br /><br /> 内存操作<br /><br />1、某IO芯片被定为在CPU的存储空间而非IO空间,而且寄存器对应于某原创 2011-04-23 11:12:00 · 590 阅读 · 0 评论 -
问题集
1,函数返回值应该怎么设计,根据不同错误返回不同?当前的一个看法是返回值-1为错误,>=0 为正确,同时按照不同功能标示不同结果。在错误情况下,不同情况不同日志进行错误提示。2,函数设计成多处返回还是用goto统一到最后返回?原创 2011-10-25 11:18:12 · 261 阅读 · 0 评论 -
排序算法总结
1,最简单的排序算法:冒泡排序 特点:简单直观,在数据量小时,所有排序算法性能差别不大。2,性能优异算法:快速排序特点:性能优异,不需要额外空间,数据量大而且全部在内存中时,首选。采用分而治之的方式降低复杂度。3,数据无法完全加载到内存:归并排序特点:不要求将所有数据全部加载到内存中。原创 2011-10-25 17:48:03 · 296 阅读 · 0 评论 -
可变参数实现分析
代码分析va_list 定义成指针va_end 空定义va_arg 取下一个变量地址va_start 取的第一个参数后面参数的起始地址#include #define va_list void *#define va_end(arg)#define va_arg(arg, type) *(type *)arg; arg = (char *)arg + siz原创 2011-10-24 15:37:36 · 331 阅读 · 0 评论 -
LINUX共享内存mmap
很多事情看起来很简单,但是动起手来,发现会有很多问题我们刚开始没有考虑到的。我们知道LINUX下的一种进程间通信叫共享内存,也就是使用mmap来实现。首先介绍一下mmap这个函数http://linux.die.net/man/2/mmap这个函数可以分为两种使用方式,一种是将文件映射,另一种就是内存映射。区别再于是否设置了MAP_ANONYMOUS,如果设置了这个flag,那么就意味原创 2011-10-24 14:52:44 · 744 阅读 · 0 评论 -
LINUX GCC下sizeof内存情况分析
情况:#include struct STR{ double a; int b; int c; char d;};struct STR1{ double a; char b; int c;};struct STR2{ char a原创 2011-10-09 16:01:23 · 1025 阅读 · 1 评论 -
C内存分布
先看一下测试代码:#include #include int g_val;int g_ival = 5;char *g_ptr;char *g_iptr = "hongchunhua";static int s_val;static int s_iva原创 2011-10-10 17:36:45 · 724 阅读 · 4 评论 -
Linux进程内存映射
对于进程的内存映射,总是一知半解,记得几个月前面试一家公司问:画出linux下程序运行的内存映射图。来源:http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory原创 2011-09-01 17:09:39 · 555 阅读 · 0 评论 -
Linux内核数据结构
<br /><br />链表<br />Linux内核中的链表是一个比较通用的,所以刚开始我看到时候不是特别习惯,和教科书上的都不一样,教科书上的是正向思维,就是有链表,然后怎么用。内核中的是有需求了,我们怎么构造链表,构造的链表怎么通用。这就是工作和学习的不同,最近一直找一些比较贴近实现的书,例如0bug,虽然很多人对其评价不太好,但我知道是很多c语言的书,评价很好,但是现实用的时候又有多少能用上?后面我会专门写一下0bug书上的东西。<br /><br /><linux/list.h><br />str原创 2011-05-06 21:15:00 · 393 阅读 · 0 评论 -
Linux内核设计与实现
<br />去南山书城看到linux内核设计与实现已经第三版了,翻开看看发现增加一章专门描述内核数据结构,详细描述中断处理程序和下半部机制。<br /> <br />一、温故而知新篇<br />1、fork和vfork<br />进程创建,在unix系统中,进程创建比较特别,分解为两个函数,分别为 fork和exec。首先,fork通过拷贝当前进程创建一个子进程,子进程与父进程区别仅仅在于一个pid,和某县资源和统计量,例如挂起的信号,它没有必要继承。exec函数负责读取可执行文件并将其载入地址空间运行。<原创 2011-05-06 10:30:00 · 397 阅读 · 0 评论 -
Android编译 & Linux内核编译
<br /><br />Android编译<br />一、 编译环境<br />1、 交叉编译<br />Android本身带有交叉编译工具,所以不需要单独配置。<br />2、 必要的JAVA环境<br />包括JDK等,具体可以参考google的android网站。<br /><br />二、 配置<br />1、 android功能配置<br />配置文件路径 vendor/rockchip/sdkDemo/BoardConfig.mk<br /><br />三、编译<br />make prebui原创 2011-04-26 22:17:00 · 807 阅读 · 0 评论 -
共享内存之shmget
http://linux.die.net/man/2/shmgethttp://linux.die.net/man/8/ipcsint shmget(key_t key, size_t size, int shmflg);以下几种情况会创建一个新的共享内存段:1、如果key有IPC_PRIVATE标志2、如果没有IPC_PRIVATE标志,但是没有key对应的内存,并且sh原创 2011-12-20 13:21:54 · 577 阅读 · 0 评论