本文主要介绍两个例子:1-系统调用打印“hello kernel”  2-驱动开发板的蜂鸣器 使用的是友善之臂(Friendly ARM)的开发板,三星2440 ======================================================================================== 1. 进入linux-2.6.32.2 目录,新建mysyscall 文件夹,并进入.然后新建.c 文件   2. myadd.c 文件的内容 3. 新建, v…
学习ARM也有一定时间了,想想还是记点东西,要不以后就忘了.这是我的第一片,简简单单.但比较基础.1. ARM中一些常见英文缩写解释MSB:最高有效位:LSB:最低有效位:AHB:先进的高性能总线:VPB:连接片内外设功能的VLSI外设总线:EMC:外部存储器控制器:MAM:存储器加速模块:VIC:向量中断控制器:SPI:全双工串行接口:CAN:控制器局域网,一种串行通讯协议:PWM:脉宽调制器:ETM:嵌入式跟踪宏:CPSR:当前程序状态寄存器:SPSR:程序保护状态寄存器: 2. MAM 使…
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录.页表等,这些操作显然不能随便让任何程序都可以做,于是就产生了特权级别的概念,与系统相关的一些特别关键性的操作必须由高级别的程序来完成,这样可以做到集中管理,减少有限资源的访问和使用冲突.Intel的X86架构的CPU提供了0到3四个特权级,而在我们Linux操作系统中则主要采用了0和3两个特权级,也就是我们通常所说的内核态和用户态. 运行于用户态的进程可…
系统调用:用户态进程向内核发出的,实现用户态进程调用硬件设备的函数或者中断:优点:使编程更容易,将用户从学习硬件设备的低级编程特性中解放:提高系统到安全性,内核在满足请求之前可以做正确性检查:提高可移植性: 系统调用与API调用的区别:1.API调用是一个函数定义:系统调用是通过软中断向内核发出的明确请求2.内核不可以访问库函数 内核中,返回值为正数或者0表示系统调用成功结束,否则表示出错条件 进入内核态的两种方式:1.执行 int $0x80 指令 :2.执行 sysenter 指令内核推出系…
Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. 一般的,进程是不能访问内核的,它不能访问内核所占用内存空间也不能调用内核函数.这被称为保护模式.为了和用户空间上运行的进程进行交互,内核提供一组接口.通过该接口应用程序可以访问硬件设备和其他操作系统资源. 实际上提供这组接口主要是为了保证系统稳定可靠,避免应用程序肆意妄为. 系统调用在用户空间和硬…
Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. 一般的,进程是不能访问内核的,它不能访问内核所占用内存空间也不能调用内核函数.这被称为保护模式.为了和用户空间上运行的进程进行交互,内核提供一组接口.通过该接口应用程序可以访问硬件设备和其他操作系统资源. 实际上提供这组接口主要是为了保证系统稳定可靠,避免应用程序肆意妄为. 系统调用在用户空间和硬…
1. 中断控制器 a. 中断处理流程 P1--摘自S3C2440A手册 P1简要阐述了S3C2440A内置中断控制器处理中断的流程: ●​若某中断有自中断,则先接收子中断请求,否则,直接接受源中断. ●​中断控制逻辑根据INTMSK,屏蔽对应位的中断:根据INTMOD确定对应位中断模式(FIQ或者IRQ). ​●中断仲裁器根据PRIORITY,确定仲裁规则并仲裁出最高优先级:同时,INTPND对应中断位置为1,只要CPSR的I位或者F位使能,就执行相应中断. b. 中断向量表 ​当ARM920T…
基础的知识看得差不多了,linux系统相关的,最主要是c语言基础知道,还有linux系统编程,网络编程socket等相关的.这些内容最最基础的看完了,接下来我在考虑看什么呢?是看ARM以及驱动编程系列还是看python脚本还是深入网络协议簇呢? 在智联招聘和51job上看到linux c的人好少,网络通信也很少.arm的倒还有,以前我还是比较喜欢,只是后来没能同时去涉足,现在有点纠结. 我看还是看一下ARM体系结构和驱动编程然后再深入学习网络协议簇.再开始准备简历找工作吧.加油. 今天工作计划:…
2012-05-15 1.ARM开发板环境的搭建,nor启动,通过suppervivi,下载vivi---下载Kernel----下载文件系统,然后Nandflash启动即可. 2.在/etc/init.d/rcS 中注释开机启动qtopid, #/bin/qtopid;需要启动的就是用命令 #/bin/qtopid & 如果此命令不行,就进入bin目录中执行 #./qtopid & //&符号是表示后台运行 2012-05-16 1.git clone /e/git/.git …
1.基础阶段     话说06年第一份工作从事的是PLC开发,用protel画原理图和PCB,写AVR单片机程序,焊焊板子,还去过华强北买器件,比较杂,但是接触面比较广,为进一步学ARM打下了基础. 期间不甘心只停留在AVR单片机层次,买了邵贝贝的<uCOS-II嵌入式操作系统>,看了4-5遍,弄懂它的原理,还看了陈明计的<SmallRTOS嵌入式操作系统>,之后自己写了一个AVR的时间片调度器. 2.接触ARM     08年4月份换了工作,搞B超,接触三星的S3C2410,看2…