移植uboot到mini2440(一)

发布者:快乐球球最新更新时间:2022-06-17 来源: eefocus关键字:移植  uboot  mini2440 手机看文章 扫描二维码
随时随地手机看文章

      出来半年了,感觉学到的关于技术方面的东西很少很少,更多的是对软件大环境和行业有了更多的了解,为了巩固以前学过的知识和学习新的知识,我决定移植一个uboot到我的mini2440开发板上。


        一、准备工作:包括两方面,一方面是知识储备,也即是移植uboot前必须清楚明白的一些基本原理和常识。另一方面是搭建环境。


       首先 知识储备,uboot是什么?U-Boot 是bootloader的一种,是 Das U-Boot 的简称,其含义是 Universal Boot Loader,是遵循 GPL 条款的开放源码项目。最早德国 DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSROM的源码创建了 PPCBoot 工程项目,此后不断添加处理器的支持。而后,Sysgo Gmbh 把PPCBoot 移植到 ARM 平台上,创建了 ARMBoot 工程目。最终,以 PPCBoot 工程和ARMBoot 工程为基础,创建了 U-Boot 工程,2002 年 12 月 17 日第一个版本 U-Boot-0.2.0发布,同时 PPCBoot 和 ARMBoot 停止维护。


        那什么是bootloader?先来看看linux系统中软件的结构:

        一般情况下嵌入式 Linux 系统中的软件主要分为以下几部分:

        1) 引导加载程序:其中包括内部 ROM 中的固化启动代码和 BootLoader 两部分。内部固化 ROM 是厂家在芯片生产时候固化的,作用基本上是引导 BootLoader。有的芯片比较复杂,比如 Omap3 在 flash 中没有代码的时候有许多启动方式:USB、UART 或以太网等等。而 S3C24x0 则很简单,只有 Norboot 和 Nandboot。

        2) Linux kernel 和 drivers。

        3) 文件系统。包括根文件系统和建立于 Flash 内存设备之上的文件系统(EXT4、UBI、CRAMFS 等等)。它是提供管理系统的各种配置文件以及系统执行用户应用程序的良好运行环境及载体。

        4) 应用程序。用户自定义的应用程序,存放于文件系统之中。


        具体结构如下图:

        bootloader做了什么?在 CPU 刚上电启动的时候,一般连内存控制器都没有初始化过,根本无法在内存中运行程序,更不可能处在 Linux 内核启动环境中。为了初始化CPU 及其他外设,使得 Linux内核可以在系统主存中运行,并让系统符合 Linux 内核启动的必备条件,必须要有一个先于内核运行的程序,他就是所谓的引导加载程序(bootloader)。而 BootLoader 并不是 Linux 才需要,而是几乎所有运行操作系统的设备都需要。我们的PC 的 BOIS 就是 Boot Loader 的一部分(只是前期引导,后面一般还有外存中的各种 BootLoader)。对于linux pc来说,bootloader = BIOS + GRUB/LILO。


        再来说第二方面,开发环境搭建。所谓开发环境,就是指如何得到一个uboot的bin文件,并将这个bin文件烧写到开发板中。如何得到一个bin文件?从uboot官网上下载一个uboot的源码包,解压到linux环境中通过一些列移植,最终交叉编译即可。我的开发环境是ubuntu12.04,编译器是友善之臂提供的交叉编译器arm-linux-gcc-4.4.3。如何烧写到开发板中?可以使用HJTAG通过并口烧写到nandflash中。由于友善之臂提供的supervivi具有下载和烧写功能,所以一种较为简单的方法是可以通过supervivi+dnw通过usb完成该过程。具体方法可以参照友善之臂提供的手册。

关键字:移植  uboot  mini2440 引用地址:移植uboot到mini2440(一)

上一篇:mini2440 u-boot-2009.03 移植最详细攻略
下一篇:从零开始移植U-boot到mini2440(三)——CPU初始化篇

推荐阅读最新更新时间:2024-11-09 10:22

mini2440 简单按键中断模式驱动程序
Makefile KERN_DIR = /home/grh/kernel_source_code/linux-2.6.32.2 all : make -C $(KERN_DIR) M=`pwd` modules arm-linux-gcc key_interrupt_app.c -o key_interrupt_app clean : make -C $(KERN_DIR) M=`pwd` modules clean rm -rf modules.order obj-m += key_interrupt.o copy : cp key_interrupt.ko key_interrupt_app
[单片机]
<font color='red'>mini2440</font> 简单按键中断模式驱动程序
因STM32移植而引发的两个小疑问
有STM32用户将基于STM32F0芯片的代码移植到STM32F4系列时遇到了些麻烦。其中有个问题跟中断处理有关。有个中断服务程序代码在STM32F0芯片里运行正常,移植到STM32F4芯片并使用同样的程序代码却明显异常,感觉每次中断都进了两次。 经过他一番网上搜索,大致找到了问题原因和解决办法。原因就是他在中断服务程序里做中断请求标志清零的代码放在服务程序的结尾处了,将其挪至服务程序的入口处就可以了。 问题是解决了,但依然还是有两个小疑问如鲠在喉。 第一个疑问,为什么同样的操作在F0系列正常,而在F4系列却异常呢?仅仅是因为F4系列跑得快? 其实,这里的主要原因是内核差异导致的。STM32F0系列芯片是基于ARM Cor
[单片机]
因STM32<font color='red'>移植</font>而引发的两个小疑问
linux-2.6.32在mini2440开发板上移植*移植DM9000 网卡驱动
1 设备资源初始化 Linux-2..6.32.2 已经自带了完善的DM9000 网卡驱动驱动(源代码位置:linux-2.6.32.2/ drivers/net/dm9000.c),它也是一个平台设备,因此在目标平台初始化代码中,只要填写好相 应的结构表即可,具体步骤如下: 首先添加驱动所需的头文件dm9000.h: #include linux/dm9000.h 再定义DM9000 网卡设备的物理基地址,以便后面用到: /* DM9000AEP 10/100 ethernet controller */ #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300) 再填充该平台
[单片机]
OpenCV2.0.0移植到ARM9(二)(JZ2440----S3c2440)
1、交叉编译libjpeg 为了使OpenCV能处理jpeg图像,我们必须事先交叉编译好libjpeg这里使用的版本是jpegsrc.v6b。 下载地址:https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/ 这里使用的安装包:jpegsrc.v6b.tar.gz。 (1)解压、配置 jpegsrc.v6b.tar.gz放在/work/system/目录下. 解压:$tar –zvxf jpegsrc.v6b.tar.gz 进入目录:$cd jpeg-6b 在/work/system/目录下新建一个libjpeg-arm目录,命令为:$sudo mkdir
[单片机]
OpenCV2.0.0<font color='red'>移植</font>到ARM9(二)(JZ2440----S3c2440)
将ASIC IP核移植到FPGA上——如何确保性能与时序以完成充满挑战的任务!
数字芯片设计验证经验分享(第三部分): 将ASIC IP核移植到FPGA上——如何确保性能与时序以完成充满挑战的任务! 作者:Philipp Jacobsohn,SmartDV首席应用工程师 Sunil Kumar,SmartDV FPGA设计总监 本系列文章从数字芯片设计项目技术总监的角度出发,介绍了如何将芯片的产品定义与设计和验证规划进行结合,详细讲述了在FPGA上使用IP核来开发ASIC原型项目时,必须认真考虑的一些问题。 文章从介绍使用预先定制功能即IP核的必要性开始,通过阐述开发ASIC原型设计时需要考虑到的IP核相关因素,用八个重要主题详细分享了利用ASIC IP来在FPGA上开发原型验证系统设计时需要考
[嵌入式]
将ASIC IP核<font color='red'>移植</font>到FPGA上——如何确保性能与时序以完成充满挑战的任务!
友善之臂Mini2440之嵌入式Linux下Nor Flash驱动程序设计
前面已经详细讲述了MTD子系统原理知识,这一节讲述嵌入式Linux下对NorFlash的驱动程序设计。在MTD设备层上有MTD字符设备和MTD块设备。 1、MTD字符设备层的源码文件为/mtd/mtdchar.c。该源码文件为MTD原始设备提供了一个字符设备访问接口,使得上层应用程序可以以字符设备的方式来访问MTD原始设备。mtdchar.c主要定义了一个字符设备访问文件操作函数和向内核注册了一个字符设备,MTD字符设备的主设备号为90,源码如下: #define MTD_CHAR_MAJOR 90 #define MTD_BLOCK_MAJOR 31 static const struct file_operatio
[单片机]
stm32 u8g2移植笔记
前言 当初想写一个单色屏菜单时,曾移植过u8g2到STM32平台(这里用的是keil MDK),不过当时一直有一个问题没有搞懂:为什么u8g2用在flash为32k,ram为2k的arduino uno上都不会报空间不足,却在flash为512k,ram64k的stm32zet6上报错空间不足?这是由编译器导致的,arduino使用的是avr-gcc编译器在编译的时候会加-ffunction-sections -fdata-sections,链接的时候会加-Wl,-gc-sections选项,因而可以只链接用到的函数。stm32编译选项中有个类似的选项One ELF Section per Function,勾选该项可以极大的减少
[单片机]
mini2440生成uImage命令参数介绍
mkimage -n 'mini2440' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d arch/arm/boot/zImage uImage 参数解释: -n 'mini2440' // 指定原始内核镜像名称,即用mini2440来生成uImage -A arm // 指定将要运行镜像的芯片架构为ARM内核 -O linux // uboot将要引导的操作系统为LINUX -T kernel // 设置将生成镜像的类型为内核类型 -C none
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved