sunzl1987

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2014年4月9日

摘要: Bootloader是系统加电后运行的第一段软件代码,主要任务就是将内核映像从硬盘读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 简单的说,Bootloader就是在操作系统运行内核之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的硬件环境。 每种不同的cpu体系结构都有不同的bootloader,有些bootloader也支持多种不同体系结构的cpu,比如U-BOOT就同时支持ARM体系结构和MIPS体系结构。对于2块不同的嵌入式板而言,即使它们是基于... 阅读全文
posted @ 2014-04-09 17:09 Sanz 阅读(447) 评论(0) 推荐(0) 编辑

2014年3月27日

摘要: 编译linux内核 报错make[1]:arm-linux-gcc:Command not found原因没有把arm-linux-gcc放到环境变量中供编译器使用。1、运行#echo $PATH 显示/usr/local/bin:/usr/bin:/bin:/hom/iccolor/bin其中每个已经添加到环境变量中的目录以分好隔开。发现这些目录没有包含arm-linux-gcc。2、将arm-linux-gcc添加到环境变量中可以用find命令找到arm-linux-gcc所在的目录如:找到arm-linux-gcc在/usr/local/arm_linux_4.2/bin下将改路径添加到 阅读全文
posted @ 2014-03-27 17:22 Sanz 阅读(561) 评论(0) 推荐(0) 编辑

2014年3月11日

摘要: 遇到的问题,通过I2C总线读、写(read、write)fs8816加密芯片,报错如下: read str failed,error= Input/output error! write str failed,error= Input/output error! read str failed,error= Device or resource busy! write str failed,error= Device or resource busy!原因是fs8816芯片管脚虚焊。解决办法,补焊,问题解决。 阅读全文
posted @ 2014-03-11 10:43 Sanz 阅读(2185) 评论(0) 推荐(0) 编辑

2014年2月13日

摘要: 1网络设备驱动的结构Linux网络设备驱动程序体系结构如下图,从上到下依次划分为4层,依次为网路协议接口层、网络设备接口层,提供实际功能的设备驱动功能层以及网络设备与媒介层。(1)网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()... 阅读全文
posted @ 2014-02-13 18:52 Sanz 阅读(1602) 评论(0) 推荐(0) 编辑

摘要: USB驱动分为两块,一块是USB的bus驱动,这个东西,Linux内核已经做好了,我们可以不管,我们只需要了解它的功能。形象的说,USB的bus驱动相当于铺出一条路来,让所有的信息都可以通过这条USB通道到达该到的地方,这部分工作由usb_core(drivers/usb/usb.c)来完成。当USB设备接到USB控制器接口时,usb_core就检测该设备的一些信息,如生产厂商的ID(VID)和产品的ID(PID),或者是设备所属的class、subclass跟protocol,以便确定应该调用哪一个驱动处理该设备。里面复杂细节我们不用管,我们要做的是另一块工作——usb的设备驱动。也就是说, 阅读全文
posted @ 2014-02-13 15:23 Sanz 阅读(7135) 评论(0) 推荐(0) 编辑

2013年1月29日

摘要: 内容可寻址存储器CAM(Coment-Addressable Memo-ry)以内容进行寻址的存储器,是一种特殊的存储阵列RAM。它的主要工作机制就是将一个输入数据项与存储在CAM中的所有数据项自动同时进行比较,判别该输入数据项与CAM中存储的数据项是否相匹配,并输出该数据项对应的匹配信息。内容可寻址存储器的特性 1、160 ns的匹配时间; 2、设有屏蔽寄存器; 3、通过芯片级联扩展深度;4、时钟频率最高为50 MHz;5、匹配字宽和输出结果位宽可自定义;6、在ATM模式下可进行VPC(Virtual Path Circuits)和VCC(Virtual CONnection Circui. 阅读全文
posted @ 2013-01-29 12:20 Sanz 阅读(4838) 评论(0) 推荐(0) 编辑

2012年8月8日

摘要: //头文件省略int GetFileLength(char *pFileName ){int cur_pos;int len;FILE *fp;fp = IC_FOPEN(pFileName,"r");if(fp == NULL){return -1;}//取得当前文件流的读取位置cur_pos = ftell( fp );//将文件流的读取位置设为文件末尾fseek( fp, 0, SEEK_END );//获取文件末尾的读取位置,即文件大小len = ftell( fp );//将文件流的读取位置还原为原先的值fseek( fp, cur_pos, SEEK_SET ) 阅读全文
posted @ 2012-08-08 16:28 Sanz 阅读(837) 评论(0) 推荐(0) 编辑

2012年6月26日

摘要: 如果read()读到数据为0,那么就表示文件读完了,如果在读的过程中遇到了中断则read()应该返回-1,同时置errno为EINTR。因此判断read的条件如下:if <=0{if==0{ 表示文件结束, 处理 } if(<0 && errno==EINTR) { 表示中断,处理 } else { 否则,出错 }}如果 write()返回0,那么就表示出错,也就是无法写入了;而如果在写的过程中遇到了中断,那么write()会返回-1,同时置errno为EINTR。因此判断write的条件如下:if<=0{ if<0 { if errno==EINTR 阅读全文
posted @ 2012-06-26 10:19 Sanz 阅读(11687) 评论(0) 推荐(1) 编辑

2012年5月24日

摘要: 1、对于基于linux2.4内核的uclinux系统如何实现在应用层监控网线插拔状态?2、硬件环境:IPS100(ARM7TDMI)3、实现过程由于linux下的ifconfig命令就能够实现在应用层监控网线插拔状态,例如当网线连接正常时,使用ifconfigeth0命令,打印的信息中会有RUNNING,而拔掉网线后,再使用ifconfigeth0命令,RUNNING就不见了。所以,实现Linux应用层监控网线插入状态就相当于自己写一个ifconfig函数。基于这个思路,首先参考ifconfig的源码,可以参考linux自身提供的ifconfig的源码(linux提供的有ifconfig.c函 阅读全文
posted @ 2012-05-24 15:51 Sanz 阅读(3144) 评论(0) 推荐(0) 编辑

2012年1月15日

摘要: -----------------------------------------------------------------------------------------------------------------------------------ARM 920T S3C2440A-----------------------------------------------------------------------------------------------------------------------------------异常 异常类型 7种,分别是RST,... 阅读全文
posted @ 2012-01-15 19:52 Sanz 阅读(606) 评论(0) 推荐(0) 编辑