嵌入式
cqan
这个作者很懒,什么都没留下…
展开
-
uCOS-II中的任务切换机制(转)
初接触UCOS-II,对其任务转换机制的实现总是有点混乱,读了一篇博文,觉得清晰了许多,在这里就转过来mark一下~【@.1 函数周期与死循环】 一般函数的生命周期很简单,从开始调用函数起,直到函数返回,即结束。这样一来就完成了这个函数的使命,它也就不再需要了。对于一般的函数就是这样,但是回过头想想,对于一个系统、OS、或者工业控制中的一个控制器转载 2013-11-28 14:52:02 · 4985 阅读 · 1 评论 -
嵌入式笔试题荟萃
1:用C语言实现大小端的测试 Int CheckCpu() {union{int a;char b;}c;c.a=1;if(c.b==1)printf(“小端”);else printf(“大端”);}2:volatile的作用有哪些?Volatile第一变量相当于告诉编译器这个变量的值会随时发生变化,每次使用之前都要去内存里从转载 2016-03-08 12:00:39 · 484 阅读 · 0 评论 -
U-boot启动过程
转自:http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html 1.1 U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能Ø 硬件设备初始化Ø 加载U-Boot第二阶段代码到RAM空间Ø 设置好栈Ø 跳转载 2016-03-08 17:16:41 · 341 阅读 · 0 评论 -
16道嵌入式C语言面试题(经典)
转自:http://blog.chinaunix.net/uid-26495963-id-3165021.html预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事转载 2016-02-24 21:08:38 · 3286 阅读 · 1 评论 -
Linux内核分析:实验六
安常青 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.什么是进程所谓进程,就是一个程序的一个运行的动态实体,每个进程都有自己的进程控制块,里面记录了进程的各种信息,并通过pid唯一的标识。操作系统就是通过获取和改变进程控制块里面的成员变量,从而控制进程的运原创 2016-04-03 23:01:43 · 623 阅读 · 0 评论 -
Linux内核分析:实验一
安常青 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000计算机是如何工作的现代计算机多采用冯诺依曼体系结构,即存储程序计算机。计算机是很笨的,只能认识0和1,计算机为了能够理解不同的0和1组合,就需要特定的指令规范,即ABI(Application Binary Interface)。原创 2016-02-24 19:08:55 · 437 阅读 · 0 评论 -
进程的深入分析
在学习Linux进程内核栈的时候,看到这篇好文,在这里转载下:(注意:数据结构针对的是早期的2.4内核,2.6以后的内核数据结构和处理方法稍有不同,但是基本原理相同)作者: 曹国辉 南京凌嵌教育嵌入式Linux金牌讲师专题研究一 进程的深入理解与分析 进程是程序的一次执行过程。用剧本和演出来类比,程序相当于剧本,转载 2016-04-25 12:51:36 · 428 阅读 · 0 评论 -
Linux内核栈与中断栈补充说明
转自:http://blog.chinaunix.net/uid-20543672-id-3164573.html 中断栈与内核栈的话题更多地属于内核的范畴,所以在《深入Linux设备驱动程序内核机制》第5章“中断处理”当中,基本上没怎么涉及到上述内容,只是在5.4节有些许的文字讨论中断栈在中断嵌套情形下可能的溢出问题。 本贴在这个基础上对内核栈与中断栈的话题转载 2016-04-25 12:53:59 · 1539 阅读 · 0 评论 -
浅谈Linux PCI设备驱动
转自:http://blog.sina.com.cn/s/blog_6240123301014toi.html要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分。不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI、USB这样的驱动来说,必须要理解这个概念,才能明 白该如何看待Linux下转载 2016-03-27 14:19:58 · 383 阅读 · 0 评论 -
用户栈&内核栈
转自:http://www.cnblogs.com/shengge/archive/2011/08/29/2158748.htmlhttp://blog.chinaunix.net/uid-22548820-id-2125152.html进程内核栈、用户栈1.进程的堆栈 内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的转载 2016-03-28 16:50:48 · 594 阅读 · 0 评论 -
Git常用命令解析
1. Git概念 1.1. Git库中由三部分组成 Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。 1) 工作目录:用户本地的目录; 2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Gi转载 2016-05-12 08:43:29 · 304 阅读 · 0 评论 -
Linux内核分析:实验八
安常青 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.基本概念操作系统原理中介绍了大量的进程调度算法,这些算法从实现的角度来看仅仅是从运行队列中选择一个新的进程,选择的过程中运用了不同的策略而已。对于理解操作系统的工作机制,反而是进程的调度时机与进程的切换机制原创 2016-04-17 21:25:03 · 404 阅读 · 0 评论 -
解析 Linux 中的 VFS 文件系统机制(转)
转自:http://www.ibm.com/developerworks/cn/linux/l-vfs/本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 V转载 2016-04-24 15:38:41 · 331 阅读 · 0 评论 -
Linux电源管理(3)_Generic PM之Reboot过程
转自:http://www.wowotech.net/linux_kenrel/reboot.html1. 前言在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,称作shutdown和restart。这就是本文要描述的对象。在Linux Kernel中,主流的shutdown和restart都是通过“reboot”系统调转载 2016-08-10 09:51:27 · 1682 阅读 · 2 评论 -
Linux内核分析:实验四
使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用当我们使用某些库函数的API时,实际上该库函数啥都没干,它只是一个系统调用的封装。X86为例,系统调用会执行int 0x80指令,也就是陷入。操作系统会变为内核态,查找系统调用表,跳转到相应的系统调用。每个系统调用都对应一个唯一的系统调用号,系统调用之前,会从eax寄存器读系统调用号,系统调用的返回值也会保存在eax中原创 2016-03-18 20:39:20 · 531 阅读 · 1 评论 -
Linux内核分析:实验二
安常青 原创作品请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000操作系统是如何工作的记得有个老师曾经说过:操作系统就是躺在内存里等待被调用的代码。我觉得说的是有一定道理的。计算机有三大法宝:程序存储计算机,堆栈,中断。中断无疑是操作系统的基础之一。中断发生,系统从原创 2016-03-06 19:17:27 · 375 阅读 · 0 评论 -
ARM常用汇编及start.s初步分析
B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。而B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程的时候,可根据具体应用选用合适的子程序调用语句。 AREA Init,转载 2013-12-08 10:45:25 · 1445 阅读 · 0 评论 -
Ubuntu linux系统下安装C-kermit串口工具
gylu@dell-desktop:~$ sudo apt-get install ckermit显示安装过程gylu@dell-desktop:~$gedit ~/.kermrc输入下面内容后保存.kermrc退出: set line /dev/ttyS0 //串口 set speed转载 2013-12-04 11:42:42 · 954 阅读 · 0 评论 -
ARM学习之协处理(disable cache,mmu)
ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和存储器之间传送数据。 ARM 协处理器指令包括以下 5转载 2013-12-20 11:04:48 · 1745 阅读 · 0 评论 -
uboot总结
1. 下面代码是系统启动后U-boot上电后运行的第一段代码,他是什么意思?.globl _start_start: b resetldr pc, _undefined_instructionldr pc, _software_interruptldr pc, _prefetch_abortldr pc, _data_abortldr pc, _not_usedld转载 2013-12-20 11:11:20 · 920 阅读 · 0 评论 -
Grub和initrd对文件系统驱动的支持
本文转自:http://jallenoy.spaces.live.com/blog/cns!B70F21D986C9C057!195.entry前言本文源于这样一个问题:内核镜像存储在硬盘下特定文件系统中,bootloader必须先加载文件系统驱动,才能读取内核文件。类似的,内核要读取根文件系统中的文件,也需要先加载文件系统驱动。如果文件系统驱动存储在硬盘中,启动时没有驱动转载 2015-12-10 23:24:08 · 717 阅读 · 0 评论 -
GRUB启动过程分析 & GRUB 引导程序配置
转自:http://www.51testing.com/html/83/145083-69825.html计算机在启动的时候,首先由BIOS中的程序执行自检,自检通过后,就根据CMOS的配置找到第一个可启动磁盘的MBR中的Boot Loader程序(一般在启动盘的第一个物理扇区,占416字节),并把控制权交给Boot Loader,由Boot Loader进一步完成操作转载 2015-12-10 23:37:53 · 3153 阅读 · 0 评论 -
linux内核构成
内核构成分析uImage构成:arm linux内核映像uImage生成过程图解: u-boot认为zImage为自解压文件zImage:* (decompress code) Head.s misc.s * compressed vmlinuxvmlinux:* (vmlinux-init)arch/arm/kernel转载 2015-12-11 15:33:01 · 375 阅读 · 0 评论 -
linux中断流程详解
转自:http://blog.chinaunix.net/uid-25622207-id-2897963.html异常体系比较复杂,但是linux已经准备了很多的函数和框架,但是因为中断是和具体的开发板相关,所以中断需要我们自己来处理一些方面,但是这也是很少的一部分,很多公用的处理函数内核已经实现,linux内核搭建了一个非常容易扩充的中断处理体系。中 断系统结构涉及的方面很多,而转载 2016-01-19 11:45:28 · 346 阅读 · 0 评论 -
linux进程调度
转自:http://www.cnblogs.com/zhaoyl/archive/2012/09/04/2671156.html Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效; 2.加强交互性能:在系统相当的负载下,也要保证系统的响应时间; 3.保证公转载 2016-01-19 21:23:47 · 316 阅读 · 0 评论 -
(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
转自:http://blog.chinaunix.net/uid-23069658-id-3160506.html本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 能在CU上混的人绝非等闲之辈。因此,小弟这里转载 2015-12-01 18:52:14 · 418 阅读 · 0 评论 -
linux内核启动第二阶段之setup_arch()函数分析-2.6.36
转自:http://blog.chinaunix.net/uid-20672257-id-2383451.html执行setup_arch()函数回到start_kernel当中,569行,调用setup_arch函数,传给他的参数是那个未被初始化的内部变量command_line。这个setup_arch()函数是start_kernel阶段最重要的一个函数,每个体系都有自己的s转载 2015-12-23 21:13:52 · 4305 阅读 · 0 评论 -
TCP和UDP的区别
转自:http://www.cnblogs.com/Jessy/p/3536163.htmlTCP 与UDP的区别 很多文章都说TCP协议可靠,UDP协议不可靠!为什么前者可靠,后者不可靠呢?既然UDP协议不可靠,为什么还要使用它呢?所谓的TCP协议是面向连接的协议,面向连接是什么呢? TCP和UDP都是传输层的协议!从编程的角度看,就是两个模块(模块就是代码的集合,一系列转载 2016-03-30 14:28:59 · 291 阅读 · 0 评论 -
pid理解
PID的理解 关于理解PID控制算法最典型的一个例子就是一个漏水的水缸的问题。网上有很多讲解PID的帖子会讲到这个例子。这里我也把我自己对于PID的理解用这个例子阐述一遍。 有个漏水的水缸,而且漏水的速度还不是恒定的。然后我们还有个水桶,我们可以控制往水缸里面加水或者从水缸里面舀水出来。另外我们可以检测水平面。现在我们的目的就是要控制水平面稳定在我们转载 2017-07-14 10:17:53 · 831 阅读 · 0 评论