MINI2440从SD卡更新NK及nboot(一)

发布者:Delightful789最新更新时间:2024-08-02 来源: elecfans关键字:MINI2440  nboot 手机看文章 扫描二维码
随时随地手机看文章

买了友善 MINI2440 开发板, SuperVivi 不开源,自己的板子又没有 NOR Flash ,烧入系统带来很大的困扰,无奈之下,只能自己做烧入工具来解决。大致思路,先从 SD 卡启动 WINCE ,再用工具格式化 Flash 及分区,将 Nboot 及 NK 写入相应的块。   


应用程序操作 Flash ,无非就是 Read/Write/Earse Flash , CSDN 上有一牛人写 在 WinCE 下,应用程序直接读 / 写 / 擦除 flash 设备的方法  。


下面是我的部分代码:


 1 BOOL  FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf, DWORD nInBufSize,PBYTE pOutBuf, DWORD nOutBufSize, PDWORD pBytesReturned)

 2 {

 3    ……

 4 switch(dwIoControlCode)                                    

 5 {

 6 ……

 7 //参数自己定义

 8        case 0xFF11:

 9           return FMD_ReadSector(nInBufSize,pInBuf,NULL,nOutBufSize);  //读Sector

10           break;

11        case 0xFF22:

12            return FMD_WriteSector(nInBufSize,pInBuf,NULL,nOutBufSize);  //写Sector

13            break;

14        case 0xFF33:

15            return FMD_EraseBlock(nInBufSize);               /擦除Block

16        break;

17 }

18 }  


修改注册表,以便应用程序调用驱动


 1 [HKEY_LOCAL_MACHINEDriversBuiltInNANDFLASH]   

 2     'Prefix'='DSK'  

 3     'Dll'='nandflash.dll'  

 4     'Index'=dword:1   

 5     'Order'=dword:0   

 6     'Profile'='NANDFLASH'  

 7     'IClass'='{A4E7EDDA-E575-4252-9D6B-4195D48BB865}'  

 8   

 9 [HKEY_LOCAL_MACHINESystemStorageManagerProfilesNANDFLASH]   

10     ;'DefaultFileSystem'='BINFS'  

11     'AutoPart'=dword:1   

12     'AutoMount'=dword:1   

13     'AutoFormat'=dword:1   

14     'PartitionDriver'='mspart.dll'  

15     'Name'='Microsoft Flash Disk'  

16     'Folder'='ResidentFlash'  

17 [HKEY_LOCAL_MACHINESystemStorageManagerProfilesNANDFLASHFATFS]   

18     'Flags'=dword:14      

19     'FormatExfat'=dword:1   

20     'CheckForFormat'=dword:1   

21 'EnableWriteBack'=dword:1   


应用程序调用驱动打开设备


hFirm = CreateFile (TEXT ('DSK1:' ), GENERIC_READ | GENERIC_WRITE , 0, NULL , OPEN_EXISTING , 0, NULL );


再通过DeviceIoControl 操作Flash


更新NBOOT ,NBOOT 写在第0 块,用CreateFile 及ReadFile 将NBOOT.bin 读取至数组中,再写入Flash


关键代码:


 1      DWORD ReadSize = 4*1024;//NBOOT最大4K   

 2      DWORD actlen = 0;   

 3      PCHAR pBuff=(char *)malloc(ReadSize);    

 4      memset(pBuff,0xFF,ReadSize);   

 5      iRet = ReadFile(hFile, pBuff, ReadSize, &actlen, NULL);   

 6      if (iRet == FALSE)   

 7      {   

 8          RETAILMSG(1,(TEXT('Read nboot File Failed.nr')));   

 9          return;   

10      }   

11      //先Erase,再Write   

12      iRet = EraseBlock(hFirm,0);//Erase 第0块   

13      if (!iRet)   

14      {   

15          RETAILMSG(1,(TEXT('Ease Erase 0 Failed.nr')));   

16      }   

17      //从第0块第0页开始写,每次写一页,我用的Flash每页为512bytes   

18      for (int i=0; i < ReadSize/512; i++)   

19      {   

20          iRet = WriteSector(hFirm,i,&pBuff[i*512]);   

21          if (iRet == FALSE)   

22          {   

23               RETAILMSG(1,(TEXT('Write nboot File Failed.nr')));   

24               return;   

25          }   

26    }  

27 


关键字:MINI2440  nboot 引用地址:MINI2440从SD卡更新NK及nboot(一)

上一篇:MINI2440从SD卡更新NK及nboot(二)
下一篇:友善2440开发板开启串口输出调试信息

推荐阅读最新更新时间:2024-11-03 23:17

三.mini2440按键控制LED
首先看原理图知道KEY的引脚: 那么我们知道了按键的引脚,根据上一篇的led的引脚,可以理清楚,按键按下会修改某寄存器的值,CPU检测到按键修改,则输出电平到LED数据寄存器,进而控制LED的亮灭。 那么来修改程序。 /*LED.c*/ #define GPBCON ((volatile unsigned int *)0x56000010)/*led控制引脚*/ #define GPBDAT ((volatile unsigned int *)0x56000014)/*led数据引脚*/ #define GPGCON ((volatile unsigned int *)0x56000060)/*key控制
[单片机]
三.<font color='red'>mini2440</font>按键控制LED
u-boot-2016.03 在mini2440移植之nandflash读写
在“NorFlash启动”一文中,我们把drivers/mtd/nand/s3c2410_nand.c文件复制为s3c2440_nand.c文件,并把该文件内的所有有关“2410”的地方一律改为“2440”。这么修改仅仅是能够让系统编译成功,并没有真正实现NandFlash的读写。在这里,我们就来介绍如何让u-boot支持NandFlash的读写。 由于s3c2410与s3c2440的NandFlash控制器不一样,因此s3c2440_nand.c文件并不能直接应用,需要进行适当的修改,而主要修改的内容就是s3c2440的相关寄存器。 首先重新定义要用到的寄存器,把原文中第27行至第37行之间的宏定义去掉,改为下面的形式:
[单片机]
u-boot-2016.03 在<font color='red'>mini2440</font>移植之nandflash读写
mini2440开发总结
目前使用的内核源码目录 /home/S3-ARM/Part-4-CoreAndDriver/UP/subject3/lesson3/new/linux-mini2440/ 内核源码编译命令 make uImage ARCH=arm CROSS_COMPILE=arm-linux- tftp服务器目录 /tftpboot 文件系统目录 /home/S3-ARM/Part-4-CoreAndDriver/UP/subject4/rootfs 红帽linux用户名密码 root 123456 红帽linux中samba服务器用户名密码 win 1234567 驱动c文件编译 make 应用c文件编译 a
[单片机]
mini2440之S3C2410 SDRAM寄存器初始化设置
板子是s3c2410,使用两片容量为32MB、位宽16bit的HY57V561620CT-H芯片拼成容量为64M、32bit的SDRAM存储器。根据2410datasheet,要使用SDRAM需配置13个寄存器,以下逐个来看: 1、 BWSCON:Bus width & wait status control register总线位宽和等待状态控制寄存器。 此寄存器用于配置BANK0 – BANK7的位宽和状态控制,每个BANK用4位来配置,分别是: ● ST(启动/禁止SDRAM的数据掩码引脚。对于SDRAM,此位置0;对于SRAM,此位置1) ● WS(是否使用存储器的WAIT信号,通常置0为不使用) ● DW(两位,设置位宽
[单片机]
linux-2.6.32在mini2440开发板上移植-配置USB外设
编者:因为LINUX内核对S3C2440的Host驱动的已经支持,而且支持的外设相当的丰富,所以这一部分只是进行配置就可以使用。因为配置的东西较多,没有给出详细的截图,看手册上介绍的就很明白。需要手册的请留下邮箱索取。 1 配置和测试USB 键盘、扫描器和鼠标 在内核源代码目录的终端输入:make menuconfig,依次选择如下子菜单项: Device Drivers --- HID Devices --- 按空格键选中“USB Human Interface Device (full HID) support”,这样就配置好了USB键盘和鼠标项。 提示:这里的配置选项对应的内核源代码目录是:linux-
[单片机]
使用u-boot_2016_01启动mini2440(二)uboot内存分布
启动内存的分布主要是在board_init_f内划分的: 按照我的代码,分布如下: 代码log: U-Boot 2016.01-g3401853-dirty (Apr 04 2016 - 08:06:26 -0400) U-Boot code: 33A00000 - 33A7BEF4 BSS: - 33ACAAE4 CPUID: 32440001 FCLK: 405.600 MHz HCLK: 101.400 MHz PCLK: 50.700 MHz DRAM: Monitor len: 000CAAE4 Ram size: 04000000 Ram top: 34000000 TLB table from 3
[单片机]
使用u-boot_2016_01启动<font color='red'>mini2440</font>(二)uboot内存分布
mini2440裸机程序--LED灯(C语言)
看了mini2440配套光盘里面的例子,C语言的点亮LED程序略显复杂。当时打开工程,看到这么多文件,顿时傻了眼。还好自己能够有良好的心态,慢慢弄。 对于点亮LED灯的C语言程序,相对于汇编程序,除了MDK系统自动添加的启动代码S3C2440.S ,其余的也就和汇编程序的步骤一样了。现在就把程序附在下面: #define rGPBCON (*(volatile unsigned long *)0x56000010) #define rGPBDAT (*(volatile unsigned long *)0x56000014) #define rGPBUP (*(volatile unsigned long *)0x5
[单片机]
u-boot-2009.08在mini2440上的移植(六)---增加引导内核功能
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,参考文章: http://blogold.chinaunix.net/u3/101649/showart.php?id=2105215 http://blogimg.chinaunix.net/blog/upfile2/100811115954.pdf http
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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