交叉编译器:arm-uclinuxeabi-2010q1

交叉编译器下载下来后解压,然后将其中bin文件夹路径加入到PATH变量中.

根据《debian下烧写stm32f429I discovery裸机程序》安装openocd.

安装genromfs,使用下面命令:

sudo apt-get install genromfs

已经有人提供好脚本,只要执行几条命令即可。使用git下载文件并进行编译:

git clone https://github.com/jserv/stm32f429-linux-builder.git
make

会自动从github仓库中将uboot和内核源码以及busybox下载下来,并且制作成u-boot.bin,xipImage.bin,以及romfs.bin

如果已经连接好开发板和pc,可以用make install将文件加载到开发板中(因为现在手头没有开发板,所以没有测试这一步)。

需要注意是,这个版本的uboot中使用uart3来作为串口连接端,如果使用ft232与开发板相连,那么连接方式如下:

GND和VCC连线方式不变,但PC10连接TXD,PC11连接RXD。

之前我试过直接编译这个uboot,然后采用uart3来进行连接,用minicom可以看到到uboot的输出信息。

其他内容我还没有测试。

补注:几天后我找到了开发板,然后执行make install,但是失败了。因为make install 其实相当于调用了下面的命令(请查看文件mk/flash.mak):

 openocd \
-f interface/stlink-v2.cfg \
-f target/stm32f4x_stlink.cfg \
-c "init" \
-c "reset init" \
-c "flash probe 0" \
-c "flash info 0" \
-c "flash write_image erase $(uboot_target) 0x08000000" \
-c "flash write_image erase $(kernel_target) 0x08020000" \
-c "flash write_image erase $(rootfs_target) 0x08120000" \
-c "reset run" -c shutdown

这是因为我使用了普通账户来执行命令,而openocd需要用root账户才能执行成功。我在openocd 前添加了sudo,然后再执行make install,烧写成功。

然后使用uart3连接串口,并重启开发板,使用minicom打开串口,得到下面的信息:

U-Boot 2010.03--g934021a (Jun   - ::)

CPU  : STM32F4 (Cortex-M4)
Freqs: SYSCLK=180MHz,HCLK=180MHz,PCLK1=45MHz,PCLK2=90MHz
Board: STM32F429I-DISCOVERY board,Rev 1.0
DRAM: MB
Using default environment Hit any key to stop autoboot:
## Booting kernel from Legacy Image at ...
Image Name: Linux-2.6.-arm1
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: Bytes = kB
Load Address:
Entry Point:
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK Starting kernel ... Linux version 2.6.-arm1 (host@debian) (gcc version 4.4. (Sourcery G++ Lite 2010q1-) ) # Mon Jun :: CST
CPU: ARMv7-M Processor [410fc241] revision (ARMv7M)
CPU: NO data cache, NO instruction cache
Machine: STMicro STM32
Ignoring unrecognised tag 0x54410008
Built zonelists in Zone order, mobility grouping off. Total pages:
Kernel command line: stm32_platform=stm32429-disco mem=7M console=ttyS2,115200n8 consoleblank= root=/dev/mtdblock0 rdinit=/sbin/init video=vfb:enable,fbmem:0x907000000
PID hash table entries: (order: -, bytes)
Dentry cache hash table entries: (order: , bytes)
Inode-cache hash table entries: (order: , bytes)
Memory: 7MB = 7MB total
Memory: 6976k/6976k available, 192k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0x00000000 - 0x00001000 ( kB)
fixmap : 0xfff00000 - 0xfffe0000 ( kB)
vmalloc : 0x00000000 - 0xffffffff ( MB)
lowmem : 0x90000000 - 0x90700000 ( MB)
modules : 0x90000000 - 0x90800000 ( MB)
.init : 0x9000a000 - 0x9000e000 ( kB)
.text : 0x08028000 - 0x080c4000 ( kB)
.data : 0x90008000 - 0x90018460 ( kB)
Hierarchical RCU implementation.
NR_IRQS:
Console: colour dummy device 80x30
Calibrating delay loop... 168.34 BogoMIPS (lpj=)
Mount-cache hash table entries:
bio: create slab <bio-> at
Switching to clocksource cm3-systick
ROMFS MTD (C) Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Console: switching to colour frame buffer device 60x53
fb0: Virtual frame buffer device, using 1024K of video memory
Serial: STM32 USART driver
stm32serial.: ttyS2 at MMIO 0x40004800 (irq = ) is a STM32 USART Port
console [ttyS2] enabled
brd: module loaded
uclinux[mtd]: ROM probe address=0x8120000 size=0x59000
Creating MTD partitions on "ROM":
0x000000000000-0x000000059000 : "ROMfs"
ARMv7-M VFP Extension supported
VFS: Mounted root (romfs filesystem) readonly on device :.
Freeing init memory: 16K
starting pid , tty '/dev/ttyS2': '/bin/login -f root'
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_| For further information check:
http://www.uclinux.org/ Jan :: login[]: root login on 'ttyS2'
~ # ls
bin etc proc root sys usr
dev lib ramfs.img sbin tmp var

同时在开发板屏幕上还显示了一个企鹅的图标。

基本上测试就完成了,整个脚本都是完全可以使用的。如果需要在开发板上添加额外的模块。可以直接在现在的源代码下添加功能,相信会节约不少时间。

debian下为stm32f429i-discovery编译uboot、linux内核和根文件系统的更多相关文章

  1. Linux内核与根文件系统的关系1

    Linux内核与根文件系统的关系开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题!一语破天机: “尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用 ...

  2. Linux内核和根文件系统引导加载程序

    续博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令.就进入Linux内核启动阶段,与u-boo ...

  3. Linux内核与根文件系统的关系

    开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题!         一语破天机: “尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具.这 ...

  4. linux内核挂载根文件系统时报错”VFS: Cannot open root device "ram0" or unknown-block(0,0): error -6“如何处理?

    1. 通过error -6得到: #define ENXIO            6      /* No such device or address */ 2. 解决办法 使能CONFIG_BL ...

  5. 关于UBOOT,LINUX内核编译,根文件系统的15个小问题

    (1)内核默认运行地址和加载地址在哪里设置? 由 arch/arm/kernel/vmlinux.lds.S 生成的 arch/armkernel/vmlinux.lds决定   (2)从FLASH什 ...

  6. 嵌入式linux加载引导内核和根文件系统的方法

    总体来说,嵌入式Linux内核和根文件的引导与PC机差不多.嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我 们将内核和根文件系统直接烧入到Flash中(包括NOR和NAN ...

  7. linux内核系列(一)编译安装Linux内核 2.6.18

    1.配置环境 操作系统:CentOS 5.2 下载linux-2.6.18版本的内核,网址:http://www.kernel.org 说明:该编译文档适合2.6.18以上的Linux内核版本,只需所 ...

  8. 将MPLS编译进linux内核中

    系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mp ...

  9. 编译安装linux内核步骤

    编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录.如果用户在安装Linux时,安装了内核 ...

随机推荐

  1. .net 哈希表和字典的基本用法

    哈希表 传送门:https://www.cnblogs.com/xpvincent/archive/2013/01/15/2860841.html using System; using System ...

  2. Atitit. Atiposter 发帖机版本历史 编年史

    Atitit. Atiposter 发帖机版本历史 编年史 V1  初步实现sina csdn cnblogs V2  实现qzone sohu 的发帖功能  顺便重构接口实现分离 V3多文件循环发帖 ...

  3. PyQt5 Function Parameter Declaration

    addWidget self.lcd = QLCDNumber() grid.addWidget(self.lcd,0,0,3,0) grid.setSpacing(10) void QGridLay ...

  4. C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)<转>

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

  5. Linq系列(7)——表达式树之ExpressionVisitor

    大家好,由于今天项目升级,大家都在获最新代码,所以我又有时间在这里写点东西,跟大家分享. 在上一篇的文章中我介绍了一个dll,使大家在debug的时候可以可视化的看到ExpressionTree的Bo ...

  6. iOS流布局UICollectionView系列七——三维中的球型布局

      摘要: 类似标签云的球状布局,也类似与魔方的3D布局 iOS流布局UICollectionView系列七——三维中的球型布局 一.引言 通过6篇的博客,从平面上最简单的规则摆放的布局,到不规则的瀑 ...

  7. Lumen开发:phpunit单元测试

    先来直接运行,cmd先进入根目录,然后进入tests或是test文件夹 运行命令行:..\vendor\bin\phpunit ExampleTest.php laravel/lumen中集成了PHP ...

  8. RecyclerView的使用(3)之加入Header和Footer

    原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/50742544 李济洲的博客 RecyclerView尽管作为ListView的替 ...

  9. centos7.0 关闭防火墙

    1.关闭firewall:systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止fire ...

  10. 一篇文章彻底弄清ARC始末

    本文转载至 http://blog.csdn.net/allison162004/article/details/38758265 自动引用计数(ARC)是编译器的一个特色,提供了Objective- ...