嵌入式Linux中文站

uboot的配置流程分析

阅读(204)

简单介绍一下uboot的基本配置流程。和绝大多数源码编译安装一样,uboot在执行 make 之前需要执行 make XXXconfig 来配置相关信息,而且uboot本身是针对多种平台的bootloader,所以编译的过程也会有一点小麻烦,需要对它的源码结构有一点了解。移植uboot,大体上的流程是:配置uboot-编译-配置相关平台的启动程序-烧录 选平台工具链 平台就是CPU的架构,即exynos4412的平台就是arm,所以 ARCH=arm ,交叉编译工具链我这里用的是 arm-none-lin

Linux IPC POSIX 信号量

阅读(199)

模型 # include semaphore.h # include sys/stat.h # include fcntl.h sem_open() //初始化并打开有名信号量 sem_init() //创建/获得无名信号量 sem_wait()/sem_trywait()/sem_timedwait()/sem_post()/sem_getvalue() //操作信号量 sem_close() //退出有名信号量 sem_unlink() //销毁有名信号量 sem_destroy() //销毁无名信号

Linux 多线程可重入函数

阅读(198)

Reentrant和Thread-safe 在单线程程序中,整个程序都是顺序执行的,一个函数在同一时刻只能被一个函数调用,但在多线程中,由于并发性,一个函数可能同时被多个函数调用,此时这个函数就成了临界资源,很容易造成调用函数处理结果的相互影响,如果一个函数在多线程并发的环境中每次被调用产生的结果是不确定的,我们就说这个函数是不可重入的/线程不安全的。为了解决这个问题,POSIX多线程库提出了一种机制,用来解决多线程环境中的线程数据私有化问题,这套机制的主要思想是利用同步和互斥维护一个 同名不同值 的表,

C标准头文件<stdio.h>

阅读(178)

是很多人学C语言接触的第一个头文件,顾名思义,stdio就是标准输入输出,其中声明了一组关于输入输出的类型,宏和函数,其中就包括了打印著名的hello,world!的printf(),但是,这并不意味着这个头文件就很简单,相反,这个头文件是C标准库里唯二包罗万象的一个库(另一个是 )。好,让我们从头审视一下这个头文件 概念 文件描述符file descriptor 似于Windows系统的文件句柄,Unix/Linux系统用来描述文件的一个正整数,OS负责分发文件描述符给程序员,并把关于这个文件细节的控制

Linux I/O多路复用

阅读(162)

Linux中一切皆文件,不论是我们存储在磁盘上的字符文件,可执行文件还是我们的接入电脑的 I/O设备 等都被VFS抽象成了文件,比如标准输入设备默认是键盘,我们在操作标准输入设备的时候,其实操作的是默认打开的一个文件描述符是0的文件,而一切软件操作硬件都需要通过OS,而OS操作一切硬件都需要相应的驱动程序,这个驱动程序里配置了这个硬件的相应配置和使用方法。Linux的I/O分为 阻塞I/O , 非阻塞I/O , I/O多路复用 , 信号驱动I/O 四种。对于I/O设备的驱动,一般都会提供关于 阻塞 和 非

ARM汇编与C混合编程

阅读(163)

内联汇编 即在C中直接使用汇编语句进行编程,使程序可以在C程序中实现C语言不能完成的一些工作,例如,在下面几种情况中必须使用内联汇编或嵌入型汇编 程序中使用饱和算术运算(Saturating Arithmetic) 程序需要对协处理器进行操作 在C程序中完成对程序状态寄存器的操作 __asm__ __volatile__( asm code :output :input :changed registers) ; Note: 使用 __asm__ 和 __volatile__ 表示编译器将不检查后面的内容

linux c 用户态调试追踪函数调用堆栈以及定位段错误

阅读(219)

一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。 在glibc头文件execinfo.h中声明了三个函数用于获取当前线程的函数调用堆栈。 int backtrace(void **buffer,int size) 该函数用于获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参数 size 用来指定buffer中可以保存多少个void* 元素

Linux编程之给你的程序开后门

阅读(257)

这里说的后门并不是教你做坏事,而是让你做好事,搭建自己的调试工具更好地进行调试开发。我们都知道, 当程序发生异常错误 时,我们需要定位到错误,有时我们还想,我们在不修改程序的前提下,就能通过log来定位错误呢?有人会说,我在我的程序里加多点打印就好了,程