学习计划

25 篇文章 1 订阅

1.已经有了uboot,先编译一个linux,下载运行试试(这里面涉及linux内核的一些修改,包括时钟啊,支持的文件系统等,和uboot参数也要对应。具体查看linux移植方法)

参考:http://user.qzone.qq.com/1057481936/infocenter#!app=2&pos=1311696745

内核已经简单移植了,但是出现错误:

No oob scheme defined for oobsize 218
kernel BUG at drivers/mtd/nand/nand_base.c:3286!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1]

这和nand_flash驱动有关系。我使用的是6410,可以与已经移植好的flash驱动进行对比查看错误原因。

 

大部分 bug 以解引用 NULL 指针或者使用其他不正确指针值来表现自己的. 此类 bug 通常的输出是一个 oops 消息.

处理器使用的任何地址几乎都是一个虚拟地址, 通过一个复杂的页表结构映射为物理地址(例外是内存管理子系统自己使用的物理地址). 当解引用一个无效的指针, 分页机制无法映射指针到一个物理地址, 处理器发出一个页错误给操作系统. 如果地址无效, 内核无法"页入"缺失的地址; 它(常常)产生一个 oops 如果在处理器处于管理模式时发生这个情况.

编译内核一次不要改天多的选项,第次改之后要保存一下配置,一步步的来。 

 

2.移植成功linux后,可以制作自己的根文件系统,其他文件系统,并下载到开发板。(涉及文件系统制作步骤等)

linux内核启动后第一个挂载的就是根文件系统,制作根文件系统的方法就是创建目录以及目录中的文件,具体步骤是(可能随着内核版本有所不同):创建目录,创建必要的设备文件,安装所需的共享库,安装init文件、shell和各种基本命令(可由busybox提供),创建和编辑配置文件。

 

控制台设备console(用于显示信息),虚拟控制终端(tty1,tty2,tty3多用户借口),串口终端(有ttyS0,ttyS1,在2.6内核中ttyS0称为ttySAC0,串口终端可由被指定为控制台终端console=ttySAC0)

使用cp命令复制本机dev文件时要带上-ax选项,表示保留文件的所有属性,这样才不会去读取设备文件。

嵌入式系统出于某种需要不希望动态创建设备文件,这时需要在根文件系统内使用mknod命令预先创建,或者将创建设备文件的命令放在初始化脚本内。

lib目录下存放的是库函数,对于使用动态编译方式编译的C应用程序,必须要下面两个库文件:libc(基本C函数库)、ld-linux(该库是动态连接器,提供动态链接函数库的功能)。可直接从交叉编译器的lib目录复制以上库文件。

此外,还有一些其他基本库,如dns解析的,c++程序的等。

etc目录存放配置文件负责文件系统初始化。touch rcS,vi rcS,如下:

#! /bin/sh

echo "welcome..."

PATH=/sbin:/bin"usr/sbin:/usr/bin

runlevel=S

prelevel=N

umask 022

export PATH runlevel prelevel

//使用trap ctrl+c可以中断shell中的子进程

trap ":" INT QUIT TSTP

/bin/mount -t proc none /proc

使用chmod赋予执行权限。

 

以上所述的这些工作都可以由busybox来完成。

1.下载busybox

2.解压,运行make menuconfig启动busybox配置工具(分为setting和applets两大部分),进行选择。

3.编译make,生成可执行文件busybox,可用file命令查看。

4.测试busybox是否成功,如./busybox ls,测试busybox的ls命令。(测试无效,提示无法执行)

5.运行make install进行安装,会生成_install目录,里面有目录以及指向busybox命令文件的链接文件。其中有个指向busybox命令文件的链接文件linuxrc,它是busybox提供的init程序,和/sbin/init程序作用相同。若使用它,只需在内核启动命令参数设置“init=linuxrc。

6.情况下,busybox提供的配置文件能够满足需要,所以可直接把_install目录以及/examples/botfloppy/etc目录下所有文件复制到rootfs(根)目录下,并覆盖原有文件。

 

文件系统类型有:基于flash的,基于内存的,基于网络的。

 

mout -t nfs 10.13.9.19:/{cwd} /mnt #{cwd}是NFS共享的目录,/mnt 是挂载到本地的服务。如果你在/mnt 下可以看到NFS共享目录的内容,表示你NFS设置成功了。使用#umount /mnt 取消挂载。

 

 

3.制作自己的uboot(从官网下载新的uboot,然后依照板子进行修改,涉及到初始化具体CPU,搞定CPU初始化以后,可以考虑一些存储器、网络、命令的修改和移植。)

步骤:官网下载最新uboot源码,填写makefile中的交叉编译器,寻找最匹配的配置文件并执行,修改错误。

uboot源码分析,有助于学习底层汇编代码和arm架构知识。

飞凌OK6410开发板之u-boot-2011.06-rc2移植之愚见       

http://blog.csdn.net/l_1054781936/article/details/6567741

 

修正Ok6410的uboot网络不可用       

http://blog.csdn.net/ecbtnrt/article/details/6816817 

 

uboot下载:ftp://ftp.denx.de/pub/u-boot/

 

 

4.针对linux内核,设计驱动程序,模块化的,或者编译进内核的。(这里面设计各种驱动编写模型,可依据别的代码进行修改)

OK6410下面针对板子做了许多驱动,可以查看源代码进行学习。此外,还需要一定的理论知识,内核知识。

 

5.针对ARM平台为内核添加一些新特性,裸机ARM编程。修改uboot使其更强大,比如支持网络连接等。

6.深入理解ARM架构。

这两部可以和uboot一起学习。

 

7.制作定制自己的ARM编译器(之前的博客有记载)了解定制自己编译器的好处。

 如将锐捷移植到嵌入式设备上,就可以有线上网了。。

 

 

 

nand flash分区文件,就是\linux2.6.28\arch\arm\plat-s3c\include\platpartition.h文件,其中说明了ok6410具体分区的情况!

 

上网数度比Wi-Fi快多了。不过就是需要手工用ifconfig和route设置ip和路由,而且不能自动分配IP地址(通过busybox中的命令可以办到,不过也得手工调用),自己加里面自动配置了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我可以为您介绍一下Transformer学习计划。在学习Transformer时,您可以按照以下步骤进行: 1. 了解Transformer的基本原理和设计思想。可以参考引用中的SwinTransformer设计思想和引用中的SwinTransformer模型介绍,了解Transformer在解决新问题时需要注意的问题和巧妙的思想。 2. 学习Transformer的核心组件。Transformer由编码器和解码器组成,每个组件都包含多个注意力机制和前馈神经网络层。您可以学习注意力机制的原理和不同类型的注意力机制,例如自注意力机制和多头注意力机制。 3. 学习Transformer的训练和推理过程。了解Transformer的训练数据准备、模型训练和推理过程,包括输入数据的编码、解码和生成输出序列的过程。 4. 探索Transformer在不同领域的应用。Transformer最初是用于自然语言处理任务的,但现在已经被成功应用于计算机视觉和其他领域。您可以学习Transformer在不同领域的应用案例,并了解如何将Transformer应用到您感兴趣的任务中。 5. 实践Transformer模型的搭建和训练。使用深度学习框架,如PyTorch或TensorFlow,实践搭建和训练Transformer模型。可以使用公开的数据集和预训练的Transformer模型进行实验。 6. 深入研究Transformer的改进和变种模型。Transformer的改进和变种模型不断涌现,例如BERT、GPT和SwinTransformer等。您可以深入研究这些模型的原理和应用,并尝试复现和改进这些模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值