前段时间看APUE,确实比较详细,不过过于详细了,当成工具书倒是比较合适,还是读一读这种培训机构的书籍,进度会比较快,遇到问题时再回去翻翻APUE,这样的效率可能更高一些. <嵌入式linux应用程序开发标准教程>的前几章没必要看了,都是写浅显的知识点,从第六章文件IO编程开始记录笔记.后期再根据APUE的内容进行补充和扩展. 一.linux系统调用及API 1. 系统调用 linux分为内核空间和用户空间,用户空间无法直接访问内核空间.内核通过系统调用为用户提供服务,很精简,大约250个左右…
, 8.1 概述 linux里使用较多的进程间通信方式: 管道,pipe和fifo,管道pipe没有实体文件,只能用于具有亲缘关系的进程间通信:有名管道 named pipe,也叫fifo,还允许无亲缘关系进程间通信: 信号,signal,软件模拟中断的机制,很多信号是系统处理的: 消息队列,messge queue,消息的链表. 共享内存,shared memory,容量大,用的比较多,需要额外的同步机制,如互斥锁和信号量 信号量,semaphore,主要用于进程间的同步和互斥 套接字,soc…
线程是轻量级进程,创建线程的开销要比进程小得多,在大型程序中应用广泛. 9.1 线程概述 进程包含自己的代码.数据.堆栈.资源等等,创建和切换的开销比较大: 线程是轻量级的进程,调度的最小单元,同一个进程内的线程可以共享资源: 线程的上下文开销比进程小得多: 线程有自己的堆栈,但是用户空间共享,例如一个线程修改全局变量,会影响到同一个进程内的另一个线程: linux里其实线程就是轻量级的进程,都用PCB表示,只不过新建线程时,共享同一个进程内的资源.线程应该是单独调度 9.2 线程编程 线程一般…
进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描述进程,task_struct,在 include/linux/sched.h PID,进程唯一标识:PPID,父进程的PID #include <unistd.h> /* Get the process ID of the calling process. */ extern __pid_t g…
嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目录---chdir(): 4.重新设置文件权限掩码---umask(): 5.关闭所有的文件描述符---close(fdx): 6.设置daemon程序的任务---此例主要在while循环中体现. 下面是一个例子程序: /* daemon * how to create a daemon proce…
2016年2月 参考资料: OK210软件手册(Linux版).pdf Ubuntu下Qt4.7.1编译环境配置说明.pdf 我阅读了以下内容: OK210软件手册(Linux版).pdf 第七章 OK210平台 Linux编译篇 附录五:Ubuntu的安装与设置 Ubuntu下Qt4.7.1编译环境配置说明.pdf 全文 记录: make distclean:清除所有生成的文件 make clean:清除之前编译的可执行文件及配置文件, 清除上次的make命令所产生的object文件(后缀为“…
嵌入式linux应用程序调试方法 四 内存工具 五 C/C++代码覆盖.性能profiling工具 四 内存工具 您肯定不想陷入类似在几千次调用之后发生分配溢出这样的情形. 许多小组花了许许多多时间来跟踪稀奇古怪的内存错误问题.应用程序在有的开发工作站上能运行,但在新的产品工作站上,这个应用程序在调用 malloc() 两百万次之后就不能运行了.真正的问题是在大约一百万次调用之后发生了溢出.新系统之所有存在这个问题,是因为被保留的 malloc() 区域的布局有所不同,从而这些零散内存被放置在了…
此处所讲的是基于gdb和gdbsever的远程调试方法.环境为:PC机:win7.虚拟机:10.04.下位机:飞嵌TE2440开发板. 嵌入式linux应用程序的开发一般都是在linux里面编写好代码,并用交叉编译器arm-linux-gcc编译好之后再下载到板子上运行.如果建立了远程调试(能够在PC机ubuntu中调试板子中的linux应用程序),这样对于开发程序是极其方便的.   以下是摘自网络上的一些方法.其中加入了自己所遇到的一些问题,并提出了解决方法.   1.首先建立nfs文件系统,…
Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识,至少需要看懂硬件原理图和芯片手册.硬件原理图告诉我们底层接口工作的逻辑,以及芯片工作的条件(电压.电流.时钟脉冲等):芯片手册是告诉我们如何去配置使用芯片,比较关键的是看懂寄存器配置,对于芯片的配置,就是去配置其各个寄存器,比如去配置一个AD音视频采集的芯片:就需要去配置音频采样率.采样点数.采样位…
关于嵌入式系统   平时大家说的嵌入式其实范围比较广的,是一种软硬件可裁剪,以应用为中心开发的专用系统,硬件平台可以是单片机,或者以ARM系列的处理器.单片机一般直接裸奔程序,不过现在有了好多基于单片机的系统,最近比较火的开源系统RT-Thread,做的还是不错的:基于ARM架构的处理器大部分用的是linux系统作为软件平台,也有部分设备用的是安卓系统(内核也是linux): 嵌入式linux系统应用开发 简介   嵌入式系统开发包括内核.驱动.应用三大部分,今天主要说应用开发,内核与驱动就不多…