1、之前已经将uboot写到nandflash里面了,接下来将内核zImage、文件系统写到nandflash。
2、编译内核
将Device Drivers ---》Graphics support ---> Support for frame buffer devices ---> select LCD Type 分辨率调到480*272 保存(之后要校准屏幕)
make 完成之后将 /arch/arm/boot/zImage 复制到 /var/lib/tftpboot (tftp将zImage传输到开发板)
3、将zImage写入到nandflash并设为自动
uboot启动
nand erase 100000 400000 --------------擦出1M到4M的内存
tftp 50008000 zImage ---------------将内核传到DRAM 50008000地址
nand write 50008000 100000 400000 -----------------将内核写到nandflash 1M-4M间
set bootcmd nand read 50008000 100000 400000;bootm 50008000 ----------------------开启自动将nandflash 1M-4M内核文件读到DRAM 50008000地址并启动
save -----------------保存
完成!
4、将文件系统写到nandflash并设为自动
进入文件系统后,此时我们还是用的nfs,文件系统在PC机上。
ls /dev/mtdblock* -----------------查看nandflash一般有四块
mount /dev/mtdblock3 /mnt ---------------这里将第三块挂载到/mnt目录,对/mnt操作就相当于对mtdblock3操作
cp rootfs-qt-2.2.0.tar.gz ./
tar xf rootfs-qt-2.2.0.tar.gz
cd ..
chmod 777 /mnt/* -R
set bootages console=ttySAC0 root=/dev/mtdblock3 rootfs=yaffs2 --------------------------现在把文件系统写到mtdblock3里就可以自动挂载啦!
save
完成!现在可以不用插网线啦!有电源就可以裸奔。
5、屏幕校准
插上电源 6410一路裸奔到开机完成!
vi bin/qtopia
去掉 /usr/local/bin/ts_calibrate 前的注释符号 #
重启6410 即可进入校准界面,完成后,再在/usr/local/bin/ts_calibrate前加上注释符号#,不然每次都要校准!
关键字:s3c6410 文件系统 nandflash 串口通信
引用地址:
s3c6410学习笔记-将内核zImage、文件系统写到nandflash、屏幕校准
推荐阅读最新更新时间:2026-03-22 11:13
linux下的nandflash驱动分析(3)——基于s3c6410平台
在上一篇中probe函数中的一个很重要的函数nand_scan函数,现在来说另外一个很重要的函数add_mtd_partitions函数,add_mtd_partitions()会对每一个新建分区建立一个新的mtd_part 结构体,将其加入mtd_ partitions中,并调用add_mtd_device()将此分区作为MTD设备加入mtd_table。成功时返回0,如果分配mtd_part时内存不足,则返回-ENOMEM。 1、在说这个函数前,先说下,与这有关的结构体struct mtd_part和struct mtd_partition结构体,如下所示: mtd_part结构体用于描述分区,其mtd_info结构体
[单片机]
ok6410 nandflash 启动uboot 超过256k怎么办
1\在调试ok6410 nandflash启动uboot时,需要添加调试信息,导致uboot大于256k 2需要修改下面几个地方 参考资料 在uboot中可以添加文字菜单,但是不够美观。 利用photoshop制作一张jpg菜单图片,在ubuntu中使用jpeg2bmp.sh将jpg图片转换成bmp格式 uboot/tools/bmp_logo.c编译生成的工具bmp_logo可以根据bmp格式图片生成bmp_logo.h,图片的信息存储在数组当中。当图片的分配率越大,转换成的数组越大,导致最后编译的uboot.bin越大。当uboot.bin超过242K时,下载uboot到flash后不可启动。 解决办法: 在
[单片机]
使用jlink直接烧norflash或者nandflash不借助uboot的猜想
由于喜欢折腾,我是在linux下使用jlink的,既然JLinkExe可以进行内存读写操作,loadbin等操作,并且通过指定命令文件支持批量指令输入,那么首先jlink是可以直接访问内部存储器的,包括它的RAM和各种Soc上外设如存储控制器,串口配置寄存器等,但是不能直接访问外部存储器,如Norflash。这样一来,先关狗,设好时钟,然后通过wmem32一系列命令,操作存储控制器,这样就可以访问SRAM,然后loadbin到内存,再写回到norflash,或者nandflash,其中nandflash应该略复杂,需要设置好flash控制器,然后还要额外写一个操作nandflash的bin,并将它也loadbin至内存,setpc
[单片机]
s3c2440调试nandflash裸机程序遇到的问题
按照前面sdram的代码,启动代码里面关看门狗、初始化存储控制器(主要是BANK0的Norflash和BANK6的SDRAM)、设置栈到SDRAM的最高地址,text段的数据直接从Norflash里面取。 代码如下: head.S @************************************************************************* @ File:head.S @ 功能:设置SDRAM,将栈设置到SDRAM,然后继续执行 @************************************************************************* .
[单片机]
s3c2440裸机-nandflash编程(四. nand读写擦实现)
1.顺寻访问(Page Read) 下图的表格,来说明NAND FLASH内部结构,前面2K(02047)表示页数据,后边64字节(20482111)表示oob。 CPU想读取,第2048个数据,它是哪以一个? 是Page1的第0个字节。CPU使用某个地址访问数据的时候,是在页数据空间来寻址的。 下图为读NAND FLASH的read时序操作: 1.首先需要锁存00命令,nCE、CLE、nWE有效,0x00命令被锁存; 2.此时CLE无效,ALE开始有效,地址被锁存(从NAND FLASH的地址周期中可以看出来,先发出2个周期的col列地址,再发出3个周期的Row行地址); 3.锁存0x30命令; 4.然后会有一个busy时
[单片机]
mini2440 简单nandflash驱动代码记录(2.6.32.2内核)
#include linux/module.h #include linux/types.h #include linux/init.h #include linux/kernel.h #include linux/string.h #include linux/ioport.h #include linux/platform_device.h #include linux/delay.h #include linux/err.h #include linux/slab.h #include linux/clk.h #include linux/cpufreq.h #include linux/mtd/m
[单片机]
NORFLASH和NANDFLASH启动
S3C2440的启动时读取的第一条指令是在0x00上,分为成nand flash和nor flash上启动。 nand flash:适合大容量数据存储,类似硬盘; nor flash:适合小容量的程序或数据存储,类似小硬盘; sdram:主要用于程序执行时的程序存储、执行或计算,类似内存。 Nor flash的有自己的地址线和数据线,可以采用类似于memory的随机访问方式, 在nor flash上可以直接运行程序,所以nor flash可以直接用来做boot,采用nor flash启动的时候会把地址映射到0x00上。 Nand flash是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像nor fl
[单片机]
S3C2440裸机------NandFlash编程_时序及初始化
1.NandFlash初始化 Nandflash初始化主要包括时序图的设置和Nandflash控制器的使能,我们首先看一下S3C2440芯片手册里面的时序图。 上图中的HCLK我们已经设置成了100M。那么时钟周期是1/100M=10ns 然后下图是NandFlash芯片手册里面的时序图。 我们将S2C2440里面NandFlash控制器的时序图和NandFlash时序图结合起来看。 左图中的TACLS表示当我们的CLE/ALE发出之后,再过多长时间再发出WE信号,就是右图中的tcls-twp,而我们从右下图可以看到,tcls的最小值是12,twp的最小值也是12,就表明tcls-twp可以为零,也就表明CLE
[单片机]