移植vivi引导linux2.6.14.7内核修改的地方

本文详细介绍VIVI启动加载程序的移植步骤,包括环境搭建、配置修改、分区设置及烧录过程。针对不同编译器版本的问题给出了解决方案。

一.下载一个纯净版的vivi主要修改几个地方

1LINUX_INCLUDE_DIR       = /kernel/include/(改成你存放linux kernel源代码的地址,因为编译vivi需要用到kernel源代码的部分头文件)----我本来是要把内核升级成2.6,但是包含2.6 include就是有问题,只好把他改成2.4,我的linux就是2.4,不过这个关系不大.

2CROSS_COMPILE   = arm-linux-(改成你存放交叉编译工具的路径,通常交叉编译工具的路径都已经在profile文件中声明,所以一般直接写arm-linux-

3ARM_GCC_LIBS    =/usr/local/2.95.3/arm-linux/lib/gcc-lib/arm-linux/2.95.3(改成你安装交叉编译工具的相应路径)- ---3.4.1的编译器会报错:说什么mshort-load-bytes选项无效,搞了好久不弄明白,只好用2.95.3,我弄了两个编译环 !:) 然后就是配置选项了,make menuconfig之前,建议先make clean,先把原来试验产生的目标文件清除.

二.我移植到了开发版里的vivi的版本为1.4.现在讲一下具体修改的过程.

1.首先是拷贝vivi源代码到/home目录,解压缩.然后是修改makefile,具体是:
a.
修改为“LINUX-INCLUDE-DIR = /kernel/include/(改成你存放linux kernel源代码的地址,因为编译vivi需要用到kernel源代码的部分头文件)----我本来是要把内核升级成2.6,但是包含2.6 include就是有问题,只好把他改成2.4,我的linux就是2.4,不过这个关系不大.

b. 修改为“CROSS-COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-”
c.
修改为"ARM_GCC_LIBS =/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3"
   
在这里我遇到一个问题,我用3.3.23.4.1的编译器编译vivi会报很多错误,比如什么:invalid option "no-fpu"之类的,但是用2.95.3就没这么多问题,只是在make head.s文件时不能产生head.o件。不知道是只有我一个人有这个问题还是大家都有,总之网上没有人提到具体怎么解决这个问题。不是说换个vivi就是说换个版本的交叉编译工具,就是这个小 问题卡了我将尽两天,浪费了大量的精力,真是受不了。最后我把vivi解压后的arch/s3c2410/head.o文件先保存,再make clean后,重新make时再把它cp回来。总算是过了,不过还没从根本上解决,只好等有时间再回来好好研究了。
2.
然后是修改arch/s3c2410/smdk2410.c与引导内核保持一致

我将要移植的内核是linux-2.6.14.7,对它分区如下:

 

 

 


古在此将smdk2410.c修改为
#ifdef CONFIG_S3C2410_NAND_BOOT

mtd_partition_t default_mtd_partitions[] = {

       {
              name:           "vivi",
              offset:           0x00000000,
              size:              0x00020000,
              flag:              0
       }, {
              name:           "param",
              offset:           0x00020000,
              size:              0x0010000,
              flag:              0    
       }, {
              name:           "kernel",
              offset:           0x0030000,
              size:              0x001c0000,
              flag:              0
       }, {
              name:           "root",
              offset:           0x00200000,
              size:              0x00200000,
              flag:              0
              //flag:            MF_BONFS        
       }, {
              name:           "user",
              offset:           0x00400000,
              size:              0x03ef8000,
              flag:              0                   
       }

};

#endif
3.
修改cmd_line,因为我是用linux2.6的内核,还想使用ramdisk,所以设置为:

“char linux_cmd[] = "initrd root=/dev/mtdblock/3

init=/linuxrc console=ttySAC0,115200 mem=64M";”

你也可以设为:

“char linux_cmd[] = "initrd root=/dev/mtdblock/3 init=/linuxrc console=ttySAC0””
4. 
然后make menuconfig,主要是去掉ecc。其他的设置就不细说了。
5.  
最后,make vivi 就可以的到一个名为vivi的文件,烧到nandflash

当把vivi烧进去后,可以通过输入part show查看MTD分区情况,这个分区表应该和后面kernel中的MTD分区保持一致,但现在并不是一致的,为什么呢?这是因为刚才你修改的只是vivi第一次启动时候默认的分区设置。具体分区情况要使用bon part命令来分。重新bon分区flash,这是十分必要的,相当于重新分区并格式化了整个flash,bon分区后flash里面的数据将全部丢失,所以要再把前面 新生成的vivi烧入目标板上,当然现在就可以只通过串口把vivi烧写进去,不用像第1步那样操作烧写vivi,但是注意bon命令重新分区后千万不要 断电了再烧写vivi,否则就不能通过串口烧vivi,具体步骤如下:

(1)这里将flash分成4个区(viviparam只占一个区),输入bon分区命令:

     #bon part 0 192K 2M

 注:一开始我按网上提供的#bon part 0 192K 2M 4M分区,可总不成功,最后去掉后面的4M就成功了,我也不知道是啥原因。

     解释一下上面的命令:

      1个分区从0开始;

      2个分区从0x30000(192K)开始;

      3个分区从0x200000(2M)开始;

      4个分区从0x400000(4M)开始.

(2)分区成功后,可以通过命令bon part info或者part show来查看bon分区信息,接下来不要断电,直接通过串口下载vivi,但是要注意的是,linux下用xmodem协议下载文件很有可能出现传输过程中断线或者连不上的情况,但是在windowsXP的附件中的超级终端下通过xmodem传输文件过程却是十分的理想,所以我建议从前面的第3步一开 始就都在windowsXP环境下的超级终端里进行操作(不过我是在linux下操作的),输入命令:

#load flash vivi x

然后点击终端窗口中的传送下的发送文件,采用xmodem协议,选择要下载的vivi码即可.

(3)等待文件传输完毕后,输入boot重启目标板,并按住空格键重新进入vivi模式下,输入命令:

#part show

即可看到重新的分区表:

vivi> part show

mtdpart info. (5 partitions)

name              offset        size        flag

------------------------------------------------

 

 

 

Vivi正常启动后输出信息如下:

 

 

此至,VIVI移植圆满完成,在引导内核时我们将根据须要通过param set 命令重新设置内核引导参数。

注:

1.这次修改成功后,下次再烧写vivi时只要烧写这次修改后编译成功的vivi目标代码就可以了,无须再对烧进后的vivi更新了。

2.将kernel烧到nandflash里的时候出现invalid mtd info.信息,就是在使用viviload命令的时候出现的问题.param save也会出现问题.总之就是不能往flash里写东西.看了一下vivi的启动信息,并且和网上其它人的启动信息比较了一下,发现在memory mapping的时候都是正常的,但是我的启动信息里没有nandflashid,厂商等信息.于是在windows下用sourceinsight 个软件将vivi添加到一个工程里,查看main.c(里面可以看出了vivi的启动过程),发现对mtd的初始化等依赖于smc功能,然而我在编译的时 候是把smc掉的.重新编译vivi,make menuconfig,选中smc支持.编译,出错,说什么在mtd.o里什么mtd_nand_ecc没有定义之类的,抱着瞎试的态度,smc支持下 的关于ecc的项选中,编译通过.然后烧到板子上,启动,果然出现了nandflash的厂商信息,load命令也可以正常使用了.


【Koopman】遍历论、动态模态分解和库普曼算子谱特性的计算研究(Matlab代码实现)内容概要:本文围绕【Koopman】遍历论、动态模态分解和库普曼算子谱特性的计算研究展开,重点介绍基于Matlab的代码实现方法。文章系统阐述了遍历理论的基本概念、动态模态分解(DMD)的数学原理及其与库普曼算子谱特性之间的内在联系,展示了如何通过数值计算手段分析非线性动力系统的演化行为。文中提供了完整的Matlab代码示例,涵盖数据驱动的模态分解、谱分析及可视化过程,帮助读者理解并复现相关算法。同时,文档还列举了多个相关的科研方向和技术应用场景,体现出该方法在复杂系统建模与分析中的广泛适用性。; 适合人群:具备一定动力系统、线性代数与数值分析基础,熟悉Matlab编程,从事控制理论、流体力学、信号处理或数据驱动建模等领域研究的研究生、博士生及科研人员。; 使用场景及目标:①深入理解库普曼算子理论及其在非线性系统分析中的应用;②掌握动态模态分解(DMD)算法的实现与优化;③应用于流体动力学、气候建模、生物系统、电力系统等领域的时空模态提取与预测;④支撑高水平论文复现与科研项目开发。; 阅读建议:建议读者结合Matlab代码逐段调试运行,对照理论推导加深理解;推荐参考文中提及的相关研究方向拓展应用场景;鼓励在实际数据上验证算法性能,并尝试改进与扩展算法功能。
本系统采用微信小程序作为前端交互界面,结合Spring Boot与Vue.js框架实现后端服务及管理后台的构建,形成一套完整的电子商务解决方案。该系统架构支持单一商户独立运营,亦兼容多商户入驻的平台模式,具备高度的灵活性与扩展性。 在技术实现上,后端以Java语言为核心,依托Spring Boot框架提供稳定的业务逻辑处理与数据接口服务;管理后台采用Vue.js进行开发,实现了直观高效的操作界面;前端微信小程序则为用户提供了便捷的移动端购物体验。整套系统各模块间紧密协作,功能链路完整闭环,已通过严格测试与优化,符合商业应用的标准要求。 系统设计注重业务场景的全面覆盖,不仅包含商品展示、交易流程、订单处理等核心电商功能,还集成了会员管理、营销工具、数据统计等辅助模块,能够满足不同规模商户的日常运营需求。其多店铺支持机制允许平台方对入驻商户进行统一管理,同时保障各店铺在品牌展示、商品销售及客户服务方面的独立运作空间。 该解决方案强调代码结构的规范性与可维护性,遵循企业级开发标准,确保了系统的长期稳定运行与后续功能迭代的可行性。整体而言,这是一套技术选型成熟、架构清晰、功能完备且可直接投入商用的电商平台系统。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值