- 博客(17)
- 资源 (3)
- 收藏
- 关注
转载 ARM9 2410移植之Nand flash 驱动的编写与移植
1 Nand flash 工作原理 S3C2410 板的Nand Flash 支持由两部分组成:Nand Flash 控制器(集成在S3C2410 CPU)和Nand Flash 存储 芯片(K9F1208U0B)两大部分组成。当要访问Nand Flash中的数据时,必须通过Nand Flash控制器发送命 令才能完成。所以, Nand Flash相当于S3C241
2013-08-13 10:38:38
919
转载 uboot之nand flash相关(3)
然后我们分析一下nand flash的读写等函数。既然是命令那自然要看到U_BOOT_CMD宏,这个宏分析的很多就不分析了。在cmd_nand.c文件中。nand的命令执行函数是do_nand。当然我们没有定义CFG_NAND_LEGACY,要看这个分支。do_nand函数也没有什么好分析的,摘取几个命令的处理分析下。1。nand bad命令列出函数调用次序先,do_nan
2013-08-13 10:03:47
1243
转载 uboot之nand flash相关(2)
下面分析nand_scan函数(在文件driver/mtd/nand/nand_base.c中,此文件提供一些默认的nand flash操作函数) ,这个函数主要 用默认函数填充一些未初始化的函数指针,读取flash id 使用默认数据填充mtd,chip相关结构体(如果板级文件没有提供相关支持)。此函数的分析直接写在代码注释中。/*** nand_scan - [NAND Int
2013-08-13 10:03:11
865
转载 uboot之nand flash相关(1)
这几天在做和nandflash相关的东西,之前uboot中nandflash部分搞得模模糊糊。这次就将uboot中nand flash相关部分分析清楚。本文uboot版本1.3.3按照uboot的执行流程,在lib_arm/board.c文件中的start_armboot函数中会调用到nand初始化。初始化的调用流程大致为:start_armboot
2013-08-13 10:02:35
933
转载 常用u-boot命令详解(全)
U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。[u-
2013-07-26 09:36:09
1164
转载 linux下socket通信,server和client简单例子(三)
3. [代码]open等,fopen等说明 01某些注释部分,open,read,write被 fopen,fread,fwrite替换。02 03说明一下:04fopen, fclose, fread
2013-06-04 09:41:08
1360
转载 linux下socket通信,server和client简单例子(二)
2. [代码c代码 client部分 001client.c002 003#include // for sockaddr_in004#include // for socket
2013-06-04 09:39:50
2502
转载 linux下socket通信,server和client简单例子(一)
1. [代码]c代码 server部分 001server.c002 003====================================================================00
2013-06-04 09:31:37
7016
转载 Linux驱动的platform机制
最近研究了一下Linux驱动的platform机制。 从Linux2.6起,引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备用platform_device表示,驱动用platform_driver进行注册。 Linux platform driver机制和传统的device_d
2013-04-12 08:46:11
740
转载 Linux 设备和驱动加载的先后顺序
Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。Linux系统使用两种方式去加载系统中的模块:动态和静态。静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载核心进程(/init/main.c)kernel_initàdo_basic_setup()àdo_initcalls()该函数中会将在
2013-04-12 08:45:02
726
转载 MPC8314 (e300核) uboot 调试 一
历经2个多月,完成了MPC8314最小系统(uboot)及Linux内核和根文件系统的调试。这是我第一次从头开始做小系统和内核的移植工作,虽然调试的比较辛苦,但是收获还是很多的。下面就介绍一下调试的过程和一些原理性的东西。 1 MPC8314上电流程 系统上电后,经过若干个时钟后,MPC8314会检测复位配置输入信号CFG_RESET_SOURCE[0:3]来确定
2013-04-12 08:44:17
1431
转载 千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析 五
8 of_platform总线上gianfar设备驱动添加,并绑定设备e0024000.ethernet和e0025000.ethernet:/driver/net/gianfar.cmodule_init(gfar_init);gfar_init à of_register_platform_driver(&gfar_driver)à of_register_driver
2013-04-12 08:42:44
3064
转载 千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析 四
1 dtb文件解析,生成资源单项列表。 start_kernel à setup_arch à unflatten_device_tree该函数可以解析dtb文件,构建一个由device_node结构连接而成的单项链表。如下在此函数执行过后,在内存中会存在一个如下的链表: 后面所有的函数,如果需要从of tree结构上读取设备资料的,都将从这个链表中遍历并读取。
2013-04-12 08:40:21
1370
转载 千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析 三
在uboot阶段,没有挂载中断,接收通过轮询来实现的,所以发送和接收这两个过程跟Linux内核中有区别。在发送阶段,网口将被启动,发送函数首先找到一个可用的Buffer Descriptor,将上层软件组好的包的地址赋给该BD的指针,置相应的标志位和长度,然后通知DMA来搬运。搬运结束后,发送函数会清除相应的BD标识位。DMA将数据从内存搬运到Tx FIFO后, MAC会给其加上数
2013-04-12 08:39:39
1625
转载 Linux内核PHY中断调试
今天解决了一个PHY中断的问题,现在越来越觉得我以前的想法是错误的。以前总是认为解决问题最好的办法就是看代码,从代码出发。现在发现,其实脱离代码的分析问题能力是非常重要的,代码不熟可以通过短时间的强化变熟,而分析问题的能力却需要长期的锻炼。以后再遇到困难要多想想,分析好了再去做。问题是这样的,平台还是前几篇博客里写的:Freescale的ETSEC加Marvell的88E1111,前段时间
2013-04-12 08:38:09
2503
转载 千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析 二
这节分析uboot中的网口驱动代码。 1 网口驱动函数列表 函数名函数用途tsec_initialize()网口初始化函数tsec_init()网口启动函数tsec_local_mdio_write()MDIO口写函数tsec_local_
2013-04-12 08:36:54
1904
转载 千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析 一
在连续两个平台的uboot和Linux系统移植过程中,在千兆网口调试这块都遇到了很大的麻烦。由于寄存器数量庞大,千兆网口MAC和PHY内部结构复杂,MAC和PHY接口种类多,千兆以太网驱动的调试成了系统移植过程中最让人烦心的一个环节。就像火箭队,每次都让球迷无比揪心,不是输的窝囊,就是伤兵满营,现在新赛季又两连败了,打的比勇士还勇士,后场两个比我还瘦的家伙,怎么防守。算了,不扯这么多了,今天要说的
2013-04-12 08:35:01
1701
ST16C2550串口程序
2013-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人