- 博客(39)
- 资源 (30)
- 收藏
- 关注
转载 [raspberry pi] 树莓派 Kernel 编译笔记
来自:http://aguegu.net/?p=1544发现自己的知识体系有一段很大的空缺,就是对于 ARM 还是太缺少了解,下面是AVR系列单片机,上面是PC机、服务器,好歹都还算大概见过是怎么一回事,而对于SOC,就了解得很不够,包括对于手机、安卓或是苹果系都只是停留在应用层面,至于开发是怎么样子就没有什么感性认识,感觉一打开这扇门,就会有各种知识领域排山倒海而来。不过该来
2013-03-15 09:37:57
19054
原创 U-Boot介绍
U-Boot简介U-Boot是德国DENX小组开发的用于多种嵌入式CPU(MIPS、x86、ARM、XScale等)的Bootloader程序,U-boot不仅支持嵌入式Linux的引导,还支持VxWorks,QNX等多种嵌入式操作系统。从下面地址可以下载到uboot的源代码:
2011-07-25 19:27:43
1750
原创 Bootloader介绍
概念——什么是Bootloader 中文名称:系统启动加载器对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程。嵌入式Linux系统同样离不开引导程序,这个引导程序就叫作Bootloader。简单地说,BootLoader就是在操作系统内核运行之前运行的一
2011-07-25 16:48:09
1070
原创 交叉工具链
交叉编译 交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓 平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。安装交叉工具链
2011-07-25 08:47:48
512
转载 uImage的制作
对于Linux 2.6 以上内核,内核编译的时候支持uImage目标#make menuconfig#make uImage或者按照u-boot源代码根目录下的README文件中关于Building a Linux Image一节,手动生成uImage,步骤如下:1)配置编译内核
2011-07-17 20:06:01
821
原创 Linux内核模块开发
功能模块1.什么是内核模块Linux内核的整体结构非常庞大,其包含的组件也非常多,如何使用需要的组件呢:方法一:把所有的组件都编译进内核文件,即zImage或bzImage。但这样会导致两个问题:一是生成的内核文件过大;
2011-07-15 16:45:54
1364
转载 LINUX的多个GCC版本
我目前使用的是UBUNTU的8.04,因为最近一直在升级LINUX,导致目前我的GCC也变高了,目前是4.2.3。当我编译以前手头上的CROSSTOOL时出现这样的提示:checking for a BSD-compatible install... /usr/bin/insta
2011-07-10 20:15:54
495
原创 Linux内核配置与编译
Linux内核具有可定制的优点,具体步骤如下:1.清除临时文件、中间文件和配置文件。 (1).make clean:remove most generated files but keep the config. (2).make mrproper:remove all generated files + config files.
2011-06-24 16:01:00
506
原创 ARM处理器的快速上下文切换技术
5.3.1 FCSE概述<span style="font-size: x-small; font-family: Times New Roman;">FCSE(Fast Context Switch Extension,快速上下文切换)位于CPU和MMU之间,如果两个进程使用了同样的虚拟地址空间,则对CPU而言,两个进程使用了同样的虚拟地址空间。快速上下文切换机构对各进程的虚拟地址进行
2011-06-23 08:42:00
3627
原创 Linux内核目录简介
目录结构Linux内核源代码采用树形结构进行组织,非常合理的把功能相关的文件都放在同一个子目录下,使得程序更具可读性。内核源代码下载地址:www.kernel.org。1.arch目录:arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,有进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统
2011-06-20 20:46:00
713
原创 linux内核简介
Linux体系结构从上图得知,Linux由用户空间和内核空间两部分组成。 现代CPU通常实现了不同工作模式,以ARM为例,实现了7种工作模式:用户模式(usr)、快速中断(fiq)、外部中断(irq)、管理模式(svc)、数据访问中断(abt)、系统模式(sys)、未定义指令异常(und)。 x86也实现了4个不同的级别:Ring0——Ring3。Ring0下,
2011-06-20 16:30:00
616
原创 ARM920T中断控制系统
中断控制机制CPU运行过程中,如何知道各类外设发生了某些不预期的事件,比如串口收到了数据、按键被按下?此时ARM有两种中断机制:1.查询方式。程序不断地查询各设备的状态,并作出相应的反应。该方式实现比较简单,常用在比较单一的系统中,比如一个温控系统中可以使用查询方式不断检测温度的变化。特点:实现简单;但CPU利用率很低,不适合多任务的系统。2.中断方式。当事件发生时,硬件会设置某个
2011-06-17 15:40:00
1396
原创 mini2440 LED程序设计
LED程序设计LED是开发中最常用的状态指示设备,mini2440具有4个用户可编程LED,它们直接与CPU的GPIO相连接,低电平有效(点亮),资源占用如下表:LED控制思想1.先将相应的引脚设置为输出模式。2.再向相应的引脚输出低电平即可点亮LED灯。 注:要写此程序要先看懂mini2440CPU引脚及寄存器设置手册。Main.c函数如下:#define
2011-06-15 10:22:00
626
原创 S3c 2440的GPIO
GPIOGPIO,通用输入输出(General Purpose I/O)的简称,其引脚可以供编程使用。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备,对这些设备的控制,有时只需要一位控制信号就够了,即只需要开/关两种状态就够了,比如灯亮与灭。对这些设备的控制,使用传统的串行口和并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程I/O接口”,即GPIO。S3c GPI
2011-06-15 09:28:00
1095
原创 大、小端模式的测试
大端模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中小端模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。 采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。嵌入式系统开发者应该对Little-endian和Big-endia
2011-06-14 09:17:00
603
原创 TCP并发服务器
服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:1.循环服务器。服务器在同一时刻只能响应一个客户端的请求。2.并发服务器。服务器在同一时刻可以响应多个客户端的请求。前面介绍的为TCP和UDP循环服务器。TCP并发服务器并发服务器的思想是每一个客户机的请求并不由服务器直接处理,而是由
2011-06-13 15:59:00
3136
原创 UDP网络程序设计
基于UDP——服务器程序步骤:1.创建一个socket,用socket()函数2.绑定IP地址、端口等信息到socket上,用函数bind()3.循环接收数据,用recvfrom()4.关闭网络连接。 基于UDP——客户端程序步骤:1.创建一个socket,用socket()函数2.绑定IP地址、端口等信息到socket上,用函数bind()3.设置对方的IP地
2011-06-12 21:58:00
725
原创 TCP程序设计
基于TCP——服务器程序设计步骤:1.创建一个socket,用函数socket();2.绑定IP地址、端口等信息到socket上,用函数bind();3.设置允许的最大连接数,用函数listen();4.等待来自客户端的连接请求,用函数accept();5.收发数据,用函数send()和recv(),或者read()和write();6.关闭网络连接。基于TCP——
2011-06-12 15:27:00
598
原创 Linux网络编程基础
socketLinux中的网络编程通过socket(套接字)实现。socket是一种文件描述符。socket有三种类型:(1)流式套接字(SOCK_STREAM)。流式套接字可以提供可靠的、面向连接的通讯流,它使用TCP协议。TCP协议保证了数据传输的正确性和顺序性。(2)数据报套接字(SOCK_DGRAM)。数据报套接字提供了一种无连接的服务,数据通过相互独立的报文进行传输,是无
2011-06-12 11:12:00
413
原创 Linux网络基础
Linux网络优势Linux为用户提供了完善的、强大的网络功能:1.完善的内置网络。其他操作系统不包含如此紧密的和内核结合在一起的网络部分。2.Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。3.用户能通过一些Linux命令
2011-06-12 09:30:00
471
原创 线程清除
#include #include #include void *clean(void *arg){ printf("cleanup :%s /n",(char *)arg); return (void *)0;}void *thr_fn1(void *arg){ printf("thread 1 start /n"); pthread_cleanup_push( (v
2011-06-12 08:12:00
322
原创 多线程
多线程的理论基础 线程技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者(Solaris 是Sun Microsystems研发的计算机操作系统。它被认为是UNIX操作系统的衍生版本之一。目前Solaris属于混合开源软件。2005年6月14日,Sun公司将正在开发中的Solaris 11的源代码以CDDL许可开放,这一开放版
2011-06-11 21:08:00
417
原创 IPC——信号量
信号量的基本概念信号量(又称信号灯)与其它进程间通信方式不大相同,主要用途是保护临近资源,进程可以根据它判断是否能否访问某些共享资源,除了用于访问控制外,还可以进行进程同步。 分类二值信号灯:信号灯的值只能取零和一,类似于互质锁,但两者又不同:信号灯强调共享资源,只要共享资源可用,其它进程同样可以修改信号灯的值;互斥锁则更强调进程,占用资源的进程使用完毕后,必须由进程本身来解
2011-06-11 21:06:00
408
原创 IPC——消息队列
消息队列的基本概念 Unix早期通信机制之一的信号机制能够传送的信号量有限,管道则只能传送无格式的字符流,这无疑会给应用程序开发带来不便,而消息队列则克服了这些缺点。 消息队列就是一个消息的链表,可以把消息看成一个记录,具有特定的格式。进程可以向队列中按照一定的规则添加新消息;另一些进程则可以从消息队列中读取消息。 目前主要有两类消息队列:
2011-06-11 21:06:00
572
原创 IPC——共享内存
共享内存的概念 共享内存是指被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存的区域写了数据,共享这块内存区域的所有进程就可以立刻看到其中的内容了。 共享内存的实现可以分为两个部分: 一.创建共享内存,使用shmget函数; 二.映射共享内存,将这块创建的共享内存映射到具体的进程空间中去,使用
2011-06-11 21:05:00
1555
原创 IPC——信号
信号(signal)机制是Unix系统中最为古老的进程间通信机制,很多条件可以产生一个信号:一. 当用户按某些键时,产生信号。二. 硬件异常产生信号:除数为零,非法的存储访问等等。这些情况通常是由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正在访问一个无效存储区的进程产生一个SIGSEGV(SIG is a common prefix for signal names
2011-06-11 21:04:00
531
原创 管道
进程间通信概述 进程通信的目的1. 数据传输一个进程需要将它的进程传递到另一个进程2. 资源共享多个进程需要共享同样资源3. 通知事件一个进程需要向另外一个或者一组进程发送消息,通知他们发生了某种事件。4. 进程控制有些进程希望完全控制另一个进程的执行,此时控制进程希望能够拦截另一个进程的所有操作,并
2011-06-11 21:03:00
441
原创 进程控制
1.fork()函数 fork()的作用是创建一个进程,它有两个返回值。一个值是调用fork的父进程中fork()返回所创建子进程的id号,另一值是在fork创建的子进程中fork()返回值0,但是在子进程中,虽然fork()的返回值是0,但是子进程的id不是零。注意:fork调用,新建的子进程拷贝父进程的所有资源,比如内存,堆栈等,使用fork系统调用产生父子进程,父子进程的
2011-06-11 21:02:00
339
原创 时间函数
时间类型有两种:一种是世界标准时间(UTC: Universal Time of Coordination),即格林威治时间(GMT:Greenwich Mean Time);另一种是日历时间(Calendar Time),是用从一个标准时间点(如:1970年1月1日0点)到此时经过的秒数来表示时间。函数名称如下:1. time_t time(time_t *tloc)
2011-06-11 21:00:00
491
原创 Linux下系统调用访问文件
Linux的文件操作有两种方式:①Linux系统调用方式,这种方式依赖于Linux系统②C语言的文件操作,采用C语言的库函数实现。以下是Linux系统调用方式: 1. 创建文件int creat(const char *filename, mode_t mode)filename:要创建的文件名,包含路径,缺省时为当前路径;mode:创建模式常见创建模式:S
2011-06-11 20:58:00
2275
原创 makefile使用
规则: 目标 依赖 命令 target:prerequisites command注意:命令行必须以tab键开始!! makefile文件中存在系统默认的自动化变量:1. $^ 代表所有的依赖文件2. $@ 代表目标文件3. $ 例如: A: hello:main.o fun1.o fun2.o
2011-06-11 20:56:00
413
原创 gdb常用调试命令
将.c文件编程成包含标准调试信息的文件命令:# gcc -g *.c -o *1 .启动gdb调试程序 两种方式: A:gdb filename B: 启动gdb后,使用file filename2 .list(l) 查看程序(方便设置断点)
2011-06-11 20:55:00
326
原创 shell编程
第一个:比较两个数的大小在shell编程中,如果多个关键字写在一行的话,关键字之间应该用分号隔开,否则会出现错误无法运行。#!/bin/bash#将第一个命令行参数传递给变量a,第二个命令行参数传递给变量ba=$1b=$2 #判断a或者b变量是否为空, 只要有一个为空就打印提示语句并退出if [ -z $a ] || [ -z $b ]then echo "please ent
2011-06-11 20:53:00
514
原创 shell脚本
Shell是命令解析器,将用户的指令转换为相应的机器能够运行的程序。Shell脚本是一个包含一系列命令序列的文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到执行。 ex1:脚本范例#!/bin/sh#echo somethingecho "hello world"mkdir /tnt 注意: 第一行:#!用来指定该脚本程序的解析程序,开头的第一行只能有这些:
2011-06-11 20:50:00
519
原创 Enterprise Linux5 安装wireshark
wireshark是一款开源网络协议分析器,它可以实时检测网络通讯数据,也可以抓取网络通讯数据。可以通过界面浏览这些数据,可以查看网络通讯数据包中每一层的详细内容。 第一步:在Windows下红帽企业版5的.iso文件中找到下面四个包,用samba共享给虚拟机。lm_sensors-2.10.0-3.1.i386.rpmnet-snmp-5.3.1-19.e15.i386.rpmwir
2011-06-11 20:49:00
575
原创 Enterprise Linux5 配置Samba服务器(国嵌)
配置redhat的IP地址,确保redhat可以PING通XP的IP地址。 redhat的IP地址最好采用静态配置的方式,这样它的IP不会经常改变,IP地址的设置参考本机系统的IP地址。我的机子的IP是: IP Address. . . . . . . . . . . . : 192.168.5.159 Subnet Mask . . . . . .
2011-06-11 20:47:00
1439
原创 Enterprise Linux5 配置NFS服务器(国嵌)
1.先查看有没有安装nfs-utils的安装包, 命令:# rpm -q nfs-utils 显示 nfs-utils-1.0.9-24.el5 为已经安装 2.如果没有安装nfs-utils的安装包,从对应的Linux操作系统版本的安装光盘上找到nfs-utils的安装包并安装。 命令:# rpm -ivh nfs-utils-1.0.9-24.el5.i386.rp
2011-06-11 20:46:00
899
原创 Enterprise Linux5 配置TFTP服务器(国嵌)
TPTP服务器作为工作于宿主机上的软件,主要提供对目标机的主要映像文件的下载工作。 第一步:用命令查看tftp服务器有没有启动,如果已启动,则不用安装。 命令:#netstat –a | grep tftp 若有如下结果: udp 0 0 *:tftp *:* 则已经按照成功不用安装, 如果什么都不显示,则需
2011-06-11 20:44:00
517
Oracle_VM_VirtualBox_Extension_Pack-4.3.26-98988.vbox-extpack
2015-06-23
Visual.Assist.X.v10.0.1230.0.Winall.Cracked-iNFECTED.rar
2011-04-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人