软件开发,安全加密
摘要:本文主要讲述linux如何处理ARM cortex A9多核处理器的内核同步部分。主要包括其中的内存屏障、原子变量、每CPU变量。 自旋锁、信号量、complete、读写自旋锁、读写信号量、顺序锁、RCU放在后文介绍。
摘要:第二章主要讲述linux如何处理ARM cortex A9多核处理器的中断、异常。介绍了中断向量表的入口、通用的中断处理代码、中断和软中断、延迟处理、中断异常的返回过程。 第二章内容较多,会分几个部分讲述。
摘要:本章主要介绍了LINUX3.0内存寻址方面的内容,重点对follow_page函数进行注释,以帮助读者大致了解ARM A9的页表组织。 读者需要理解一些基本概念:虚拟地址、物理地址、MPU、MMU、ARM中的二级页表、cache、TLB。
将磁盘格式化为FAT12文件系统. Source code: 点击(此处)折叠或打开 ;%define _BOOT_DEBUG_ ; 做 Boot Sector 时一定将此行注释掉!将此行打开后用 nasm Boot.
分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等。 1:在内核MTD中可以定义分区A~B,C~D。。。。。。并予以绝对的地址赋值给每个分区。
总的来分,Linux文件系统分为两类,基于Flash和基于RAM的文件系统。两者的特点是,基于Flash的文件系统是掉电可保存的,但对于RAM的文件系统掉电是会丢失的。 一、基于Flash的日志型的文件系统 1、只读的CramFS文件系统简介 CramFS是一个压缩式的文件系统,它并不需要一次性的将文件系统中的所有内容都解压缩到内存之中,而是在系统需要访问某个位置的数据时,首先计算出该数据在CramFS文件系统中的位置,将这段数据实时地解压缩到内存中,而不是所有的数据。
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 共享资源,欢迎转载:http://hbhuanggang.
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 共享资源,欢迎转载:http://hbhuanggang.
共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一 个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。
定位oops的具体代码行 来自Linus Torvalds的讨论: https://groups.google.com/group/ ... 41/ed9c0a0cfcd31111 例如这样的一个Oops: Oops: 0000 ...
在Linux下,通过bluez 蓝牙库可以用C语言轻松实现蓝牙通信。在ubuntu下可以用 apt-get install libbluetooth-dev 安装该库。下面是几个简单示例。
一、 概述 U-boot中的TFTP用于发送较小的文件。下层使用UDP协议,发送使用UDP 69端口,每次发送的最大分组为512 Bytes。发送双方采用超时重传机制。
使用Bochs和GDB对内核进行源代码级调试 Written by YY Wednesday, 21 April 2010 12:49 http://osfromscratch.
很多版本的Linux都是关闭core dump功能的。可以使用ulimit –c来判断当前系统是否启用core dump。 点击(此处)折叠或打开 $ulimit –c 0 -c为内核core dump文件大小限制,0表示该系统没有开启core dump,可以使用下边的命令来开启core dump。
前段时间对内核的模块重新做了研究,对内核模块的编译流程也作了一定的了解,比起5年前有更深入的认识。 根据LDD3的内核模块makefile和原理说明,我根据自己的需要做了适当的修改使得这个Makefile脚本可以方便被应用于不同的简单模块编译,并可以在模块需要编译进内...
开发板上只有Nor Flash,所以为了实现层次文件系统,需要为Linux2.6.20增加Nor Flash MTD驱动支持。其实工作量并不大,因为已经有现成的程序可供参考。MTD的驱动程序都集中在drivers/mtd里面。
觉得这位同学关于内存动态分配讲的很通俗易懂,所以转载了:)现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。
隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误。如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失。反过来,这可能传播错误,使定位问题的源头变得困难。
S3C2440内部集成了一个Nand flash控制器。S3C2440的Nand flash控制器包含了如下的特性: l 一个引导启动单元 l Nand Flash存储器接口,支持8位或16位的每页大小为256字,512字节,1K字和2K字节的Nand flash l 软件模式:用户可以直接访问Nand Flash存储器,此特性可以用于Nand Flash存储器的读、擦除和编程。
移植路上真是荆棘满路,时不时让你疯狂一两天,却无可奈何... 网上已有很多相关的移植教程,第一步,当然是照着做。问题是我的Linux是2.6.19.2,与前些版本相比(据查,2.6.17版还在),在移植过程中,我发现有两个变化。
Linux-2.6.20的cs8900驱动分析 几经波折,在开发板上终于可以使用网络了。Linux 内核可以通过网络挂接网络文件系统了。首先感谢Internet ,Google 等帮助过我的工具,还要感谢各位嵌友的无私奉献。
gcc的学习在C接触到linux以后就开始不断的学习,也知道了一些基本的用法,但是关于gcc的使用还是有很多值得我们加深的地方。gcc只是一个编译工具而已。也就相当于我们在windows环境下的visual c++等一样,区别是visual c++是基于IDE的,而gcc是这些IDE的基础。
u-boot引导友善之臂Linux内核 作者:kangear Email:kangear@163.com Blog:kangear.blog.chinaunix.net 当我刚接触u-boot时,不想自产自用,先用人家移植好的。
编写 USB 驱动程序 (本部分的一些示例源码来自drivers/usb/usb-skeleton.c,它是Linux内核为我们提供的最基础的USB驱动程序,USB骨架程序) 驱动程序把驱动对象注册到 USB 子系统中,之后使用供应商(idVendor)和设备(idProduct)标识来判断对应的硬件是否已经安装.
xxd的作用就是将一个文件以十六进制的形式显示出来,具体选项如下。 -a : 它的作用是自动跳过空白内容,默认是关闭的 -c : 它的后面加上数字表示每行显示多少字节的十六进制数,默认是16字节。
在上一篇博文里,我们已经看到Linux如何有效地利用80x86的分段和分页硬件单元把逻辑地址转换为线性地址,在由线性地址转换到物理地址。那 么我们的应用程序如何使用这些逻辑地址,整个内存的地址布局又是怎样的?打一个比方,内存就像一座城市,而居住在这个城市里的市民就像是各个进程,一个市 民吃喝拉撒睡,当然就得用于“房子”、“车子”、“票子”等各种各样的资源。
这段代码还是比较容易理解的.就不单独解释了。 点击(此处)折叠或打开 /* Copy some data bits from skb to kernel buffer. */ int skb_copy_bits(const struct sk_buff *skb, int o...
JTAG相关的理论基础 理论基础内容来源于中国芯动力网站论坛:http://socvista.com/bbs/viewthread.php?tid=1468,经过了本人的重新组织。
Linux USB驱动框架分析(一) 事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。
这几天在帮朋友开发一个软件,里面要产生一些随机数。这里把我学到的东西总结一下,有些具体的原理是什么,我也不太清楚,只知道怎么用。写下来,和大家分享,希望对大家有点用,若有不对的地方,希望大家给指出来。
开始学习uboot,对于linux我还是个新手,在这只是对学习uboot做下笔记,文中错误之处请谅解。使用的uboot版本是2009.11。 要了解一个linux工程,一般要大致看懂它的makefile文件,我在学习uboot时也是先从其Makefile文件看起的,uboot的主Makefile就有三千多行,还有其他子文件夹中的Makefile。
第一届“ChinaUnix博客之星”评选活动候选名单 经过20余天的公示,在大家积极推荐的情况下,产生了我们2012年的第一届“ChinaUnix博客之星”评选活动的候选名单,大家可以再次的通过站内短信或者直接在本文章下面评论处,为这些博主们投上一票,我们最后将根据大家的投票结果产生我们最后的五位博客之星,欢迎大家积极参与投票。
配置之前先了解一下比较重要的一些配置信息,有助于我们得心应手地驾驭服务器: samba允许单独加载的用户配置文件:include = /etc/samba/%G.smb.confinclude = /etc/samba/%U.
获取broadcom软件开发包文件(refsw-YYYYMMDD-PLATFORM.tgz) 登陆Linux操作系统,建立开发目录 cd /root mkdir broadcom cd broadcom 解压broadcom开发...
前面已经说了阻塞与非阻塞的访问方式,这里我们就继续说下异步通知的机制。 什么是异步通知呢?异步通知的意思就是,一旦设备就绪,则主动通知应用程序,应用程序 根本就不需要查询设备状态,类似于中断的概念,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。
作为一名linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但是由于硬件问题、软件问题、网络环境等的复杂性 和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一大难题, 本章从系统入手,重点讲述由于系统软、硬件配置不当可能造成的性能问题,并且给出了检测系统故障和优化性能的一般方法和流程。
mtdchar.cMTD字符设备的文件 notifier MTD字符设备的notifier static struct mtd_notifier notifier = { add: mtd_notify_add, ...
struct device { struct device *parent; struct device_private *p; struct kobject kobj; const char *init_name; /* i...
Linux 内核调试器(KDB)允许您调试 Linux 内核。这个恰如其名的工具实质上是内核代码的补丁,它允许高手访问内核内存和数据结构。KDB 的主要优点之一就是它不需要用另一台机器进行调试:您可以调试正在运行的内核。
如果你是一个硬件系统管理员或者Linux工程师,你可能会记得大多数Linux命令行技巧。下面的这些Linux命令行技巧通常不被Linux用户所使用。 1.使用pgrep快速查找一个PID pgrep遍历目前正在运行的进程然后列出符合查找规则的进程ID(PID)。
如何理解一个基于ARM内核的微处理器 可以从两方面来理解基于ARM内核的微处理器,一方面是由ARM公司设计的ARM内核,另一方面是由芯片设计厂家在ARM内核上整合的各种外围设备和外围接口控制器。
4. UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。
http://blog.chinaunix.net/uid-20671839-id-3032468.html1.1.1 进程的基本知识 1. 调度类型 每个Linux进程总是按照下面的调度类型被调度: l SCHED_FIFO 这是先进先出的实时进程。
嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。这样,应用程序在嵌入式目标系统上运行,而gdb调试在Host端,所以要采用远程调试(remote)的方法。
今天偶然又看到了typeof这个东西,只知道它大概是返回变量的类型,后来上网查了下发现这个关键字在linux中用的非常多, 这里大概叙述了typeof是一个什么东西,怎么用,实际上可以用简单的话来重述。
详解神秘内核 转载于http://www.it168.com 来源:Chinaunix 作者:Chinaunix 【IT168 技术文档】在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念。
作者:冯建,华清远见嵌入式学院讲师。 Linux内核给开发者提供了灵活的模块加载方式,开发者可根据需要适当地选择静态或动态的方式将模块加入内核当中。静态加载的时候我们只需将驱动文件添加到对应的文件夹中并修改相应的Makefile和Kconfig即可,但是通过动态加载模块的方式,如果只是编译一个小的驱动文件而对内核大动干戈,那样编译的时间不仅长而且修改内核配置文件也是一件多余的工作。
中断、异常、抢占内核====================中断信号分类-------------------中断信号是一个统称,统称那些改变CPU指令执行序列的事件。但它又分为两种:一种是同步的,没那么突然,因为它只在一个指令的执行终止之后才发生,书中依从Intel的惯例,称为异常(Exception)。
当Power on PC时,BIOS的代码开始执行,然后是Linux初始化的代码,这其中大约很长一段时间Linux都没有进程这一概念,但是这不影响CPU执行它的二进制代码。如果不是多任务以及进程调度的需要,Linux内核可以一直这样走下去。
Linux系统中的init进程(pid=1)是除了idle进程(pid=0,也就是init_task)之外另一个比较特殊的进程,它是Linux内核开始建立起进程概念时第一个通过kernel_thread产生的进程,其开始在内核态执行,然后通过一个系统调用,开始执行用户空间的/sbin...