2013年3月13日 星期三

[嵌入式系統]MCU燒錄 及U-boot指令

MCU燒錄
1.安裝燒錄工具程式與執行

2.插上MCU燒錄器

3.File > Import > xxxxxxxx.hex  選擇完畢後 Checksum欄位出現 0xxxx(只要出現代表成功)

4-1.Configure > Select device > PIC16F1826

  • 選擇MCU CHIP,這個步驟選過一次後燒錄程式會紀錄

4-2.此時將治具插到板子上

5.Programmer > Select programmer > 6 PICkit 3

  • 選了會自動Connect 到MCU(Output視窗會出現一串訊息,PICkit 3 detected~connected),每次重開燒錄程式都要選 ...
  • 如果要Re-connect,先選None再選6 PICkit3
  • 若出現error:You must connect a target device to use PICkit3這是正常的(因為裝置還沒過電)

6.Programmer > Settings > 選Power頁 > 將Power target circuit from PICkit3 攔勾選起來

  • 此時會出現Device ID Recision: 000000d 表示接上了

7.點主畫面點右上方Tool bar 的Program,進行燒錄,再點選旁邊的Read鍵讀取,再點選旁邊的Verify鍵進行驗證

  • 如果沒有燒錄成功,output window會出現錯誤
  • 燒錄下一片只需要將治具拔出,換下一片,點Tool bar的Program, Read, Verify即可

後記:某次燒錄的時候怎麼燒都燒不進去,業界前輩建議我接上主電源 再點選Power再燒錄看看,結果過了~~歸咎原因:因為板子以接上其他裝置的電源,導致第六步驟的power供電不足
雖然感覺已燒錄卻會出現燒錄失敗的情形,如下:

PICkit 3 detected 
 Connecting to PICkit 3... 
 Firmware Suite Version...... 01.26.26 
 Firmware type......................dsPIC33F/24F/24H 
 PICkit 3 Connected. 
 Device ID Revision = 00003040 
 
 Programming... 
 Programming failed


========================================================================

U-boot指令
Survey:常用u-boot命令详解(全)

燒錄mac位址:burnmac xx:xx:xx:xx:xx:xx
列印設定檔相關資訊:printenv

底下待整理:

Printenv 列印環境變數

    Uboot> printenv
    baudrate=115200
    ipaddr=192.168.1.1
    ethaddr=12:34:56:78:9A:BC
    serverip=192.168.1.5
    Environment size: 80/8188 bytes

Setenv 設定新的變數

    Uboot> setenv myboard AT91RM9200DK
    Uboot> printenv
    baudrate=115200
    ipaddr=192.168.1.1
    ethaddr=12:34:56:78:9A:BC
    serverip=192.168.1.5
    myboard=AT91RM9200DK
    Environment size: 102/8188 bytes

Saveenv 儲存變數

    命令將當前定義的所有的變數及其值存入flash中。用來存儲變數及其值的空間只有8k位元組,應不要超過。

Loadb 透過串口Kermit協議下載二進製數據。

Tftp 透過網路下載程式,需要先設定好網路配置

    Uboot> setenv ethaddr 12:34:56:78:9A:BC
    Uboot> setenv ipaddr 192.168.1.1
    Uboot> setenv serverip 192.168.1.254     (tftp伺服器的位址)
    下載bin檔案到位址0x20000000處。
    Uboot> tftp 20000000 application.bin (application.bin應位於tftp服務程式的目錄)

    Uboot> tftp 32000000 vmlinux
    把server(IP=環境變數中設定的serverip)中/tftpdroot/ 下的vmlinux透過TFTP讀入到物理內存32000000處。

Md 顯示Memory 的內容。

Mm 修改Memory ,位址自動遞增。

Nm 修改Memory ,位址不自動遞增。

Mw 用模型填充Memory 

    mw 32000000 ff 10000(把Memory 0x32000000開始的0x10000位元組設為0xFF)

Cp 拷貝一塊Memory 到另一塊

Cmp 比較兩塊Memory 區

    這些Memory 操作命令後都可加一個後綴表示操作數據的大小,比如cp.b表示按位元組拷貝。

Protect 寫保護操作

    protect on 1:0-3(就是對第一塊FLASH的0-3扇區進行保護)
    protect off 1:0-3取消寫保護

Erase 清除扇區。

    erase: 刪除FLASH的扇區
    erase 1:0-2(就是對每一塊FLASH的0-2扇區進行刪除)

對DataFlash的操作

    U-Boot在引導時如果發現NPCS0和NPCS3上連有DataFlash,就會分發虛擬的位址給它,具體為 ︰
    0xC0000000---NPCS0
    0xD0000000---NPCS3

run 執行設定好的腳本

    Uboot> setenv flashit tftp 20000000 mycode.bin\; erase 10020000 1002FFFF\;
    cp.b 20000000 10020000 8000
    Uboot> saveenv
    Uboot> run flashit

bootcmd 保留的環境變數,也是一種腳本

    如果定義了該變數,在autoboot模式下,將會執行該腳本的內容。

Go 執行Memory 中的二進製代碼,一個簡單的跳轉到指定位址

Bootm 執行Memory 中的二進製代碼

    要求二進製代碼為製定格式的。通常為mkimage處理過的二進製檔案。
    起動UBOOT TOOLS製作的壓縮LINUX內核, bootm 3200000

Bootp 透過網路啟動,需要提前設定好硬體位址。

? 得到所有命令清單

help  help usb, 列出USB功能的使用說明

ping  注︰只能開發板PING別的機器

usb

    usb start:  起動usb 功能
    usb info:  列出設備
    usb scan:  掃描usb storage(u 盤)設備

kgo  起動沒有壓縮的linux內核

    kgo 32000000

fatls 列出DOS FAT檔案系統

    fatls usb 0列出第一塊U盤中的檔案

fatload 讀入FAT中的一個檔案

    fatload usb 0:0 32000000 aa.txt 把USB中的aa.txt 讀到物理Memory 0x32000000處﹗

flinfo 列出flash的訊息

nfs

    nfs 32000000 192.168.0.2:aa.txt
    把192.168.0.2(LINUX 的NFS檔案系統)中的NFS檔案系統中的aa.txt 讀入Memory  0x32000000處。



沒有留言:

張貼留言