2008年10月14日 星期二

一支在 U-Boot 上單獨執行的範例: 於 模組A【設計實作ARM嵌入式開發板-以PXA270為例】上課實作之 LED Flash

在模組A上課時,我會講解嵌入式系統之硬體與系統架構,目前以 ARM-PXA270 教學開發板為主,講解內容包括: ARM 處理器底層架構、ARM處理器之組合語言、Boot Loader( 操作及設計要點 )、開機初始化流程、FLASH 的 Read/Write/Erase、開發板內之各類嵌入式硬體介面控制實作,以及如何將嵌入式Linux OS Porting至 ARM 開發版。


在介紹開發板內之各類嵌入式硬體介面控制實作時,可以利用Linux Device Driver方式撰寫( 這我是在 模組C時講解與實作 ),也可以在 U-Boot 上寫單獨執行的程式範例( 如 UART 控制、GPIO控制 ),這裡貼上在課程間實作的 GPIO控制 LED 閃爍範例:


硬體線路圖如下:


利用一顆 74374 Latch IC 來擴展GPIO。( 上課時有講解此IC 的SPEC及如何控制 )。


程式碼寫好編譯後,產生一LED8Exam.bin 可執行檔,接著在 超級終端機鍵入 loadb 指令,畫面如下:


接著在  超級終端機上 選 轉送/傳送檔案,然後通訊協定選擇 Kermit ,檔案名稱選擇 LED8Exam.bin,按下 傳送鍵,操作畫面如下:


傳送成功的畫面如下, 接著 在 U-Boot 上鍵入 go 指令,以執行該載入的程式。


此 LED8Exam.bin 執行時,會透過  74374 Latch IC 控制 IO子版的 8個LED,讓其 閃爍,也就是亮一秒、暗一秒交互20 次。在  8個LED暗的同時,在母板上的 LED3 將會亮,在  8個LED亮的同時,在母板上的 LED3 將變暗。畫面如下:


8個LED同時亮,在母板上的 LED3 暗

8個LED同時暗,在母板上的 LED3 亮


現在貼上在 U-Boot 上單獨執行範例的程式碼 ,程式碼如下:


/****************************************************************
 * $Author: YiHua,Chiang.  EMail: microcyh@seed.net.tw $
 ****************************************************************/
#include
#include
#include "LED8Exam.h"
void regInit(void);
int main( int argc, char *argv[] )
{
  int i;
  app_startup(argv);
  printf( "Hello TCFST\r\n" );
  regInit();


  for( i=0;i< 20; i++ )
  {
    GPIO27_DD0_0
    GPIO105_DD1_0
    GPIO116_DD2_0
    GPIO103_DD3_0
    GPIO95_DD4_0
    GPIO94_DD5_0
    GPIO93_DD6_0
    GPIO12_DD7_0
   
    GPIO20_LED3_1
    udelay( 100 );
 
    GPIO21_CSLED_1
    udelay( 100 );
    GPIO21_CSLED_0
    udelay( 1000000 );
    //====================
    GPIO27_DD0_1
    GPIO105_DD1_1
    GPIO116_DD2_1
    GPIO103_DD3_1
    GPIO95_DD4_1
    GPIO94_DD5_1
    GPIO93_DD6_1
    GPIO12_DD7_1
   
    GPIO20_LED3_0
    udelay( 100 );
 
    GPIO21_CSLED_1
    udelay( 100 );
    GPIO21_CSLED_0
    udelay( 1000000 );
  } 
  return 0;
}


1 則留言:

  1. Dear CYH
    as I compiled the source code with the arm-linux-gcc (3.3.2), it worked, but it was failed with version:: 3.4.1 .
    So maybe we can find something different with 3.3.2 and 3.4.1 when we have enough free time !!
    Titan

    回覆刪除

FPGA Verilog 的學習經驗,提供給要入門的新手

今天簡單說說 FPGA Verilog 的學習經驗,提供給要入門的新手: 1.對自己寫的FPGA Verilog程式,所生成的數位電路要心中有數。 這一點個人認為很重要,就正如寫 C語言,心中要能生成對應的組合語言一樣,我是這樣要求自己的。 雖然 FPGA Verilog語言...