摘要: arm+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2)必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自... 阅读全文
posted @ 2012-03-14 23:00 苍术厚朴 阅读(5245) 评论(0) 推荐(0) 编辑
摘要: //内存控制块typedef struct os_mem{ void *OSMemAddr; //pointer to beginning of memory partition void *OSMemFreeList; //pointer to list of free memory blocks INT32U OSMemBlkSize; //size (in bytes)of each block of memory INT32U OSMemNBlks; //Total n... 阅读全文
posted @ 2012-03-14 12:15 苍术厚朴 阅读(277) 评论(0) 推荐(0) 编辑
摘要: //通过OSSemCreate()建立信号量OS_EVENT *OSSemCreate(INT16U cnt){#if OS_CRITICAL_METHOD==3 OS_CPU_SR cpu_sr;#endif OS_EVENT *pevent; if(OSIntNesting>0) //判断是否被中断服务子程序调用 { return ((OS_EVENT*)0); } OS_ENTER_CRITICAL(); pevent=OSEventFreeList;//试图从空闲事件控制块联表中得到一个事件控制块ECB if(O... 阅读全文
posted @ 2012-03-14 12:14 苍术厚朴 阅读(761) 评论(0) 推荐(0) 编辑
摘要: //中断退出函数OSInitExit(),标志着中断服务子程序的终结void OSInitExit(void){#if OS_CRITICAL_METHOD==3 OS_CPU_SR cpu_sr;#endif if(OSRunning==TRUE) { OS_ENTER_CRITICAL(); if(OSIntNesting>0) { OSIntNesting--; //中断嵌套层数计算器减一 } if((OSIntNesting==0)&&(OSLockNesting==0)) ... 阅读全文
posted @ 2012-03-14 12:12 苍术厚朴 阅读(967) 评论(0) 推荐(0) 编辑
摘要: //c语言,基于x86处理器的uc/os-II开中断和关中断的洪定义#if OS_CRITICAL_METHOD==1#define OS_ENTER_CRITICAL() asm CLI;#define OS_EXIT_CRITICAL() asm STI;#endif#if OS_CRITICAL_METHOD==2#define OS_ENTER_CRITICAL() asm {PUSHF;CLI}#define OS_EXIT_CRITICAL() asm POPF#endif#if OS_CRITICAL_METHOD==3#define OS_ENTER_CRITICAL() .. 阅读全文
posted @ 2012-03-14 12:10 苍术厚朴 阅读(580) 评论(0) 推荐(0) 编辑
摘要: ;ARM处理器任务上下文的切换汇编语言函数OS_TSK_SW():;指令说明:STMFD,是按照高地址->低地址存储,并且指针往前-4. STMFD sp!,{pc} ; 保存当前任务PC的任务栈区STMFD SP!,{lr} ; 保存当前任务LR,即当前任务的返回地址,即任务栈区STMFD SP!,{ro-r12}; 保存R0...R12到任务栈区MRS R4,CPSR; R4用作中间暂存数据寄存器STMFD SP!,{R4}; 保存CPSR到任务栈区MRS R4,SPSR; R4用作中间暂存数据寄存器STMFD SP!{R4}; ... 阅读全文
posted @ 2012-03-14 12:09 苍术厚朴 阅读(753) 评论(0) 推荐(0) 编辑
摘要: //ucos的初始化void OSInit(void){#if OS_VERSION>=204 OSInitHookBegin();#endif OS_InitMisc(); //初始化系统需要的一些变量 OS_InitRdyList(); //初始化就绪列表 OS_InitTCBList(); //初始化TCB列表 OS_InitEventList(); //初始化事件列表#if (OS_VERSION>=251)&... 阅读全文
posted @ 2012-03-14 12:07 苍术厚朴 阅读(1263) 评论(0) 推荐(0) 编辑
摘要: //定义一个文件系统的类型static DECLARE_FSTYPE(pipe_fs_type,"pipefs",pipefs_read_super,FS_NOMOUNT);//管道超级块static struct super_block *pipefs_read_super(struct super_block *sb,void *data,int silent){ struct inode *root=new inode(sb); //生成管道文件系统的根目录的内存inode if(!root) return NULL; ... 阅读全文
posted @ 2012-03-14 12:01 苍术厚朴 阅读(498) 评论(0) 推荐(0) 编辑
摘要: struct module{ unsigned long size_of_struct; struct module *next; const char *name; unsigned long size; union { atomic_t usecount; long pad; }uc; unsigned long flags; unsigned nsyms; unsigned ndeps; struct module_symbol *syms; struct module_ref *deps... 阅读全文
posted @ 2012-03-14 11:58 苍术厚朴 阅读(400) 评论(0) 推荐(0) 编辑
摘要: struct mm_struct{ struct vm_area_struct *mmap; //list of VMA rb_root_t mm_rb; //指向vma段红黑树的指针 struct vm_area_struct *mmap_cache; //last find_vma result 存储上一次查询的操作的结果 pgd_t *pgd; //进程页目录的起始地址 atomic_t mm_users; //h... 阅读全文
posted @ 2012-03-14 11:55 苍术厚朴 阅读(4330) 评论(0) 推荐(1) 编辑