您的位置:首页 > 运维架构 > Linux

tiny6410 裸机程序烧机简单介绍

2012-09-04 15:42 411 查看
要把一个裸机程序烧写到板子上,是调试裸机程序的第一步。

xp环境下:

    此时可以按照Tiny6410的刷机指南进行操作:

    (1)使用SD-Flasher.exe烧写superboot到sd卡中(这两个文件都在Tiny6410的光盘中)。

    (2)假如SD卡没有目录和文件,可以跳过此步骤。如果有images目录,那么就要把其中的FriendlyARM.ini删掉或者修改其中CheckOneButton=No,把No改为Yes。

    (3)这时插入SD卡启动,会显现菜单功能,如果要烧写并运行裸机程序,就选择d。

    (4)在PC上启动DNW软件,在DNW软件上点击“USB Port”下的“Transmit/Restore”菜单,将会弹出文件打开对话框,选择你的裸机程序bin文件。就会进行烧写并运行。

     注意:此方法程序会从0x50000000地址开始运行,所以在编译裸机程序时,要指定地址为0x'50000000,而不是0x00000000。

 

linux环境下:

     linux环境下烧机更为强大,什么工具都不需要使用。

     原理如下:从SD卡启动时,会把SD卡总容量-18的扇区开始的8K空间加载到0x0C000000处运行,所以把我们的裸机程序bin文件写到总容量-18扇区即可。

     烧写方法:

        (1)查看我们SD在系统中的节点以及大小信息:sudo fdisk -l

        root@archermind-desktop:/# sudo fdisk -l

        Disk /dev/sda: 500.1 GB, 500107862016 bytes

       255 heads, 63 sectors/track, 60801 cylinders

       Units = cylinders of 16065 * 512 = 8225280 bytes

       Sector size (logical/physical): 512 bytes / 512 bytes

       I/O size (minimum/optimal): 512 bytes / 512 bytes

       Disk identifier: 0xc74ff3f5

        Device Boot      Start         End      Blocks   Id  System

        /dev/sda1   *           1       12749   102406311    7  HPFS/NTFS

        /dev/sda2           12750       25498   102406342+   7  HPFS/NTFS

        /dev/sda3           25499       60802   283573249    5  Extended

        /dev/sda5           25499       37656    97655808   83  Linux

        /dev/sda6           37656       38143     3905536   82  Linux swap / Solaris

        /dev/sda7           38143       60802   182009856   83  Linux

         Disk /dev/sdb: 3980 MB, 3980394496 bytes(SD卡,大小为3980394496)

         9 heads, 8 sectors/track, 107975 cylinders

         Units = cylinders of 72 * 512 = 36864 bytes

        Sector size (logical/physical): 512 bytes / 512 bytes

        I/O size (minimum/optimal): 512 bytes / 512 bytes

        Disk identifier: 0x00000000

        Device Boot      Start         End      Blocks   Id  System

        /dev/sdb1             114      107976     3883008    b  W95 FAT32

        /dev/sdb3             346         346           0    0  Empty

        Partition 3 does not end on cylinder boundary.

         (2)烧写裸机程序bin文件到/dev/sdb:

          使用dd命令,dd if="bin文件" of =dev/sdb seek=3980385280(3980394496-18*512)bs=1

          注意of中是sdb,不带数字,带数字的是分区。

 

总结:

      其实裸机开发中,linux 的dd命令足够强大,给我们带来了很多方便,而且使我们的程序不受superboot的影响。但是xp下ads开发起来很方便,所以我很少用linux环境来开发裸机程序,主要是arm-linux-gcc环境对裸机开发支持不好(可能是我不懂,反正我写中断的时候在此环境下是怎么也没有成功的)。

      其实xp环境中也有类型与dd的功能,只是暂时我还不知道,如果哪位牛人知道,还请留言告诉我一下。

本人所有博文目录:http://blog.csdn.net/lrs030740304/article/details/7941984

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息