随笔分类 -  嵌入式

摘要:bootloader 初始化硬件设备启动过程单阶段(single-stage)多阶段(multi-stage)bootloader大多采用两阶段stage1完成初始化硬件准备内存空间,将stage3复制到内存中,设置堆栈,跳转到stage2的c入口点stage2初始化本阶段要用到的硬件设备检测系统内存映射,检测哪些地址被实际对应到外部的sdram将kernel映像和根文件映像从flash读到ram空间为内核设置启动参数调用内核交叉工具链参考http://blog.csdn.net/retacn_yue/article/details/8510952编译器arm-linux-gcc反汇编工具ar 阅读全文
posted @ 2013-03-06 21:31 retacn_yue 阅读(177) 评论(0) 推荐(0)
摘要:linux内核开发基础linux体系结构用户空间(user space) user application gnu c library(blibc)内核空间(kernel space) system call interface kernel archlitecture-dependent kernel codelinux内核架构system call interface (SCI)系统调用接口process management (PM)进程管理 virtual file system(VFS)虚拟文件系统memory management(MM)内存管理 network stack网... 阅读全文
posted @ 2013-02-25 18:57 retacn_yue 阅读(224) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2013-02-21 21:54 retacn_yue 阅读(84) 评论(0) 推荐(0)
摘要:混合编程常见方式:1 在c/c++程序中嵌入汇编指令 语法格式:__asm{ 汇编语言程序 }2 在汇编程序中访问c/c++定义的全局变量 示例代码如下: test.c #include int gVar_1=12; extern asmDouble(void) int main(void){printf("original value of gVar_1 is %d",gVar_1); admDouble();printf("modified value of gVar_1 is %d",gVar_1);return 0; } test.s AREA 阅读全文
posted @ 2013-02-21 21:47 retacn_yue 阅读(389) 评论(0) 推荐(0)
摘要:画个草图也挺过瘾 阅读全文
posted @ 2013-02-17 22:24 retacn_yue 阅读(81) 评论(0) 推荐(0)
摘要:多线程程序设计头文件:pthread.h连接时需要用到的库文件:libpthread.a创建线程函数原型#include int pthread_creat(pthread_t *tidp,const pthread_attr_t *attr,void *(*start_rtn)(void),void *arg)tidp:线程idattr:线程属性start_trn:线程要执行的函数arg: start_rtn的参数编译由于pthread库不是linux系统的库,编译时要加上-lpthread示例代码如下:gcc filename -lthread示例代码如下:thread_create.c 阅读全文
posted @ 2013-02-16 21:42 retacn_yue 阅读(127) 评论(0) 推荐(0)
摘要:信号量又名信号灯,保护临界资源,进程可以根据它判断是否能够访问某些共享资源除了用于访问控制外,还用于进程同步分类:二值信号量 值只能取0或1,有点像互斥锁计数信号量 信号量的值可以取任意非负值创建/打开#include #include #include int semget(key_t key,int nsems,int semflg)key:键值,由ftok取得nsems:指定信号灯的数目semflg:标识,同消息队列对信号量进行控制int semop(int semid,struct sembuf *sops,unsigned nsops)semid:信号量集的idsops:是一个操作数 阅读全文
posted @ 2013-02-16 21:41 retacn_yue 阅读(144) 评论(0) 推荐(0)
摘要:消息队列信号能够传送的信息量有限管道只能传送无格式的字节流消息队列就是一个消息链表,消息可以看作是一个记录,具有特定的格式消息队列的分类:posix(可移植的操作系统接口)消息队列系统v消息队列:是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除键值每个消息队列都在系统范围内对应唯一的键值,也是获得消息队列描述字的方法返回文件名对应的键值#include #include key_t ftok(char *pathname,char proj)pathname:文件名proj:项目名(不为0即可)打开、创建#include #include #include int msgge 阅读全文
posted @ 2013-02-16 21:40 retacn_yue 阅读(195) 评论(0) 推荐(0)
摘要:共享内存通信被多个进程共享的一部分物理内存,是进程间共享数据的一种最快的方法一个进程向共享内存区域写入数据,共享这个内存区域的所有进程都可以立刻看到其中的内容实现共享内存分为两个步骤:1 创建共享内存,使用shmget函数 函数原型:int shmget(key_t key,int size,int shmflg)key:标识共享内存的键值 0 如果shmflg设置为IPC_PRIVATE,同样会创建一块新的共享内存 IPC_PRIVATE 创建一块新的共享内存 如果成功返回共享内存标识符,失败返回-1 2 映射共享内存,将这段创建的共享内存映射到具体的进程空间中,... 阅读全文
posted @ 2013-02-16 21:40 retacn_yue 阅读(212) 评论(0) 推荐(0)
摘要:信号通信用户按某些键时,产生信号硬件异常产生信号进程用kill函数将信号发送给另一个进程可以用kill函数将信号发送给其他进程信号的类型1 sighup 从终端上发出的结束信号2 sigint 来自键盘的中断信号(ctrl-c)3 sigquit4 sigill5 sigtrap6 sigiot7 sigbus8 sigfpe9 sigkill 结束接收信号的进程10 sigusr111 sigsegv12 sigusr213 sigpipe14 sigalrm15 sigterm kill命令发出的信号17 sigchld 标识子进程停止或结束的信号18 sigcont19 sigstop 阅读全文
posted @ 2013-02-16 21:39 retacn_yue 阅读(154) 评论(0) 推荐(0)
摘要:arm指令集跳转指令 实现流程的跳转专门的跳转指令b 跳转指令 格式:B{条件}目标地址 示例代码如下:当cpsr寄存器中的z条件码置位时,程序跳转到标号label处执行CMP R1,#0BEQLable指令条件指令条件 标志位 含义EQ Z置位 相等NE Z清零 不相等CS C置位 无符号数大于或等于CC C清零 无符号数小于MI N置位 负数PL N清零 正数或零VS V置位 溢出VC V清零 ... 阅读全文
posted @ 2013-02-16 21:32 retacn_yue 阅读(525) 评论(0) 推荐(0)
摘要:进程间通信(ipc)应用场景:数据传输资源共享通知事件进程控制system v at&t system vposix(portable operating system interface)可移植操作系统接口常用的进程间通信的方式:管道(pipe)和有名管道(fifo)信号(signal)消息队列共享内存信号量套接字(socket)管道通信半双工的,数据只能向一个方向流动只能用于父子进程间或兄弟进程间先进先出,一个进程在管道的尾部写入数据,另一个进程从管道的头部读出数据无名管道 用于父子进程间的通信创建管道int pipe(int filedis[2])管道建立时,所创建的两个文件描述 阅读全文
posted @ 2013-02-01 20:08 retacn_yue 阅读(180) 评论(0) 推荐(0)
摘要:进程控制进程的定义:进程是一个程序的一次执行的过程,同时也是资源分配的最小单元进程的特点:动态性、并发性、独立性、异步性进程的状态:1 就绪、阻塞、执行2 TASK_RUNNING(运行) TASK_INTERRUPTIBLE(可中断) TASK_UNINTERRUPTIBLE(不可中断) TASK_ZOMBIE(僵死) TASK_STOPPED(停止)进程id进程id(pid) 标识进程的唯一数字父进程id(ppid)启动进程的用户id(uid)进程开互斥当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止临界资源 阅读全文
posted @ 2013-01-28 21:10 retacn_yue 阅读(140) 评论(0) 推荐(0)
摘要:c语言库函数访问文件库函数是独立于操作系统平台,可移植性强文件的创建和打开FILE *fopen(const char *filename,const char *mode)filename:文件名mode:打开模式常见的打开方式:r,rb 只读w,wb 只写,如果文件不存在就创建a,ab 追加,如果文件不存在就创建r+,r+b,rb+ 读写方式打开w+,w+b,wh+ 读写方式打开,文件不存在则创建a+,a+b,ab+ 读和追加方式打开,文件不存在则创建b表示二进制文件读文件size_t fread(void *ptr,size_t size,size_t n,FILE *stream)st 阅读全文
posted @ 2013-01-27 17:29 retacn_yue 阅读(167) 评论(0) 推荐(0)
摘要:文件I/O编程1 基于linux系统的文件编程创建文件int creat(const char * filename,mode_t mode)filename:要创建的文件名mode:创建模式常见模式:S_IRUSR 可读 4S_IWUSR 可写 2S_IXUSR 可执行 1S_IRWXU 可读、写、执行返回值为文件描述符,变化范围为0~file-max文件描述符的限制有两个方面:用户级限制和系统级限制查看本次会话文件描述符限制 ulimit -n 临时修改:ulimit -SHn 10240000 永久修改:/etc/security/limits.conf示例代码如下:[retacn@lo 阅读全文
posted @ 2013-01-26 19:55 retacn_yue 阅读(212) 评论(0) 推荐(0)
摘要:makefile工程管理makefile文件描述了整个工程的编译,连接等规则规则如何生成一个或多个目标文件targets(目标):prerequisites(依赖)command(路径)示例代码:test34:test34.o test33.o test31.o(tab) gcc$~ -o $@第一条语句为最终目标make -f 指定makefile文件名伪目标.PHONY:clean #将clean目标声明为伪目标clean: rm -f $@.$$$$变量示例代码如下:obj=main.o func1.o func2.o func3.ohello:$(obj) gcc$(obj) -o h 阅读全文
posted @ 2013-01-25 20:11 retacn_yue 阅读(132) 评论(0) 推荐(0)
摘要:程序的编译与调试gcc (gnu c compiler)gcc所支持的后缀名.c c原始程序.C/.cc/.cxx c++原始程序.i 已经预处理的c原始程序.ii 已经预处理的c++原始程序.s/.S 汇编语言原始程序.h 预处理文件.o 目标文件.a/.so 编译后的库文件gcc的编译流程预处理编译汇编链接gcc 的总体选项-c 只编译不链接,生成目标文件.o-S 只编译不汇编,生成汇编代码-E 只进行预编译-g 在可执行程序中包含标准调试信息-o file 把输出文件输出到file中-v 打印出编译器内部编译各过程的命令行信息和编译器版本-I 在头文件的搜索路径列表中添加dir目录-st 阅读全文
posted @ 2013-01-25 19:40 retacn_yue 阅读(268) 评论(0) 推荐(0)
摘要:windows\linux环境下相关工具、命令的使用windows环境下的工具source insight代码阅读编辑工具,发现本人桌面上居然有3.5版本,这可能是在合肥MTK培训时装的。使用source insight3.5以内核源码为例1 创建一个source insight工程options-->document options-->document type选择c source file-->在file filter中添加"*.S"然后project-->new project-->工程名为linux-2.6.35.7,工程保存路径为 阅读全文
posted @ 2013-01-21 20:45 retacn_yue 阅读(606) 评论(0) 推荐(0)
摘要:嵌入式linux开发环境搭建硬件环境构建主机与目标板结合的交叉开发模式在主机编辑、编译软件,然后在目标板上运行和验证程序目标板s3c6410(下周入手)进行嵌入式linux开发时一般步骤1 在主机上编译bootloader通过jtag烧入开发板 通常选用具有串口传输、网络传输、烧写flash功能的bootloader2 在主机上编译嵌入式linux内核,通过bootlader烧入开发板或直接启动 内核应支持网络文件系统(nfs),即将应用程序放在主机上,单板启动嵌入 式linux内核后,通过网络来获取程序,然后运行3 在主机上编译各类应用程序,开发板启动内核后通过nfs运行它们,验证 后再烧入 阅读全文
posted @ 2013-01-16 20:55 retacn_yue 阅读(327) 评论(0) 推荐(0)
摘要:嵌入式经历了单片机(SCM)single chip microcomputer微控制器(MCU)micro controller unit系统级芯片(SOC) system on a chip预定制模块ip(intellectual)arm(advanced risc machine)处理器介绍嵌入式处理器种类, arm mips ppc应用领域无级通信、消费电子、成像设备海量存储、汽车电子、工业控制和网络应用安全系统 如信用卡、SIM卡arm体系架构的版本(即使用指令集的版本)arm架构支持32位的arm指令集和16位的thumb指令集扩展功能java加速器(jazell)提高安全性能的tr 阅读全文
posted @ 2013-01-14 20:01 retacn_yue 阅读(266) 评论(0) 推荐(0)