u-boot移植随笔(17):一些内存地址的再次研究(二维数组及指针数组)

u-boot移植随笔(17):一些内存地址的再次研究(二维数组及指针数组)

李迟按:经常碰到些笔试题、面试题,将指针、数组、字符串操作及内存的一些东西发挥到极点,本人以为,以内存角度看问题,有时会更清晰。不过,本人能力不怎么行,写完这篇文章后一段时间,又忘了二维数组和指针的指针了。一来年纪大了,记忆力不行,二来一没碰这些东西就会忘得很快。

u-boot移植随笔(16):u-boot技巧二则

u-boot移植随笔(16):u-boot技巧二则
linux内核中版本信息字符串为一宏定义,如下: #define version(a) Version_ ## a #define version_string(a) version(a) extern int version_string(LINUX_VERSION_CODE); int version_string(LINUX_VERSION_CODE);   在u-boot中,同样有相似的宏定义: #define XMK_STR(x)        #x #define MK_STR(x)        XMK_STR(x)   它是这样使用的(例子还有很多): "baudrate="        MK_STR(CONF...

u-boot移植随笔(14):困难重重,前路未知

u-boot移植随笔(14):困难重重,前路未知

这两周的周末,我都将我的开发板带回家(此处指租的房子)里搞。本来以前根文件系统这一部分是比较简单、容易的,结果搞了很多天,都没进展。第一个周末带回来是解决了u-boot引导内核的问题,第二个周末却解决不了NFS和jffs2的问题,看来我的能力下降了。

u-boot移植随笔(12):关于u-boot引导内核出现“Error: unrecognized/unsupported machine ID (r1 = 0x33f4fee8)”的问题

u-boot移植随笔(12):关于u-boot引导内核出现“Error: unrecognized/unsupported machine ID (r1 = 0x33f4fee8)”的问题

这个问题同样经典,大意是说u-boot传递的machine id不正确。在网上看到的文章几乎如出一辙:有两种方法,一是修改内核的head.S(具体在./arch/arm/kernel目录下),二是修改u-boot代码。可惜,第二种方法中出现的源代码文件,在我移植的版本中没有发现。

u-boot移植随笔(11):一些内存地址的研究(gd_t和bd_t结构体)

u-boot移植随笔(11):一些内存地址的研究(gd_t和bd_t结构体)

李迟按:学计算机的人不应该对二进制反感,因为计算机只认识0和1,但面对许多枯燥的0和1,有些人望而却步。我大约是大三、大四时候开始强迫自己认真对待二进制的,最早应该是研究SD卡时候,其时主要研究FAT表,使用WinHex工具;后来研究网络协议,主要是ENC28J60芯片,代码是国外一个组织写的,基于AVR芯片,这个实践算是理论结合实践。再后来,慢慢对底层的东西感兴趣,不断看,研究,心里老想着数据在内存中如何分布的(gdb是个强大工具)。现在,对于研究某个文件的结构,直接分析二进制数据是最好的方法。因此,建议看到此文的同志,不妨对自己狠点,过了这个坎,后面将是一马平川。正如那些说学英文很难的同志,如果肯下点苦功(辛苦的“苦”),相信勤能补拙,定会有收获。

u-boot移植随笔(10):解决引导内核遇到undefined instruction的错误

u-boot移植随笔(10):解决引导内核遇到undefined instruction的错误

前天解决了内核不能引导的问题了。在网上搜索了一些资料,才有点明白这个是怎么回事。
不能引导内核时提示的信息各种各样。像ERROR: can’t get kernel image!、Bad Magic Number、 Bad Data CRC这些。这些有时出现,有时又不出现,很是诡异。
不过最严重的还是遇到undefined instruction的错误。

u-boot移植随笔(9):终于解决Nor Flash的问题了

u-boot移植随笔(9):终于解决Nor Flash的问题了

今天解决了困扰我好几个月的问题了。这个问题本来应该在过年前就解决的,但是那个时候死活就是没招。
其实问题很简单:将u-boot下载到内存中,再使用cp命令将u-boot从内存复制到Nor Flash零地址处,之后就可以从新的u-boot启动了。网上说得很轻松,然而实际解决起来却不然。因为,我的Nor Flash是64Mbit的,即8MB。解决封装问题很轻松——开发板上的地址线预留出来了,可以扩大容量。使用并口下载的问题也解决了——到H-JTAG官方论坛上下载对应的配置文件。

u-boot移植随笔(7):u-boot启动流程简图

u-boot移植随笔(7):u-boot启动流程简图
u-boot移植随笔:u-boot启动流程简图 画上面这张图也花了点时间。虽然很简洁,但对于理解u-boot,从一个较高角度府视u-boot,很有帮助。——其实网上有很多分析教程、资料,相信大多都是大同小异的。因此,山人无谓再写一次了。 (小技巧: 如何将上面的图占为已有? 木草山人心地善良,好心地将图片的背景做成白色的,最简单的方法是使用windows系统自带的“画图”工具,图片下面的信息擦除掉改成自己的名字...

u-boot移植随笔(5):u-boot的内存分布图

u-boot移植随笔(5):u-boot的内存分布图

花了两天时间来专门研究u-boot的内存分布,这个图网上已经有了,但只是大致图形,没有详细、深入解析。所以自己就专门画了图,添加一些东西。
此外,还专门测试了一下u-boot下全局变量、未初始化变量等等的地址分布,也画了一张图。不过好像跟linux下进程的内存分布不太一致,估计是u-boot自己管理内存的——很明显,此时linux还不知道在哪里呢。但是,这些都不妨碍我们学习一些底层的东西。