2017年9月4日 星期一

2017 9/5成果紀錄:將uClinux porting 到 STM32F4 Discovery,與執行一支Linux AP 及 執行 lseek 的Linux Device Driver驅動程式

這裡簡單紀錄這一 "將uClinux porting 到 STM32F4 Discovery" 的成果。
參考這些網址: http://www.emcu.it/uCLinux/uCLinux.html 、 https://emcraft.com/products/343, 將 uBoot 、 uClinux、及 ROM file system Image正確燒錄至 STM32F4 Discovery。
硬體連接 透過 USB轉232 連接到STM32F4 Discovery的 PC10/TX, PC11/RX,在HOST端 PC 執行 putty serial console。如下圖:


uClinux_STM32F4_0.jpg - 嵌入式


接著 寫一支 Linux AP C1.c(Hello World), 透過 Cross Compiler 編譯成 C1.exe, 之後正確的傳至 在STM32F4 Discovery執行的 uClinux, C1.exe 放在 /var/tmp 目錄。
再接著 寫 uClinux 的驅動範例與搭配的AP程式、驅動程式 Drv1.c 將其編譯成 Drv.ko、AP程式 AP1.c 編譯成 AP1.exe, 之後正確的傳至 在STM32F4 Discovery執行的 uClinux,也是放在 /var/tmp 目錄。


1. 先執行 ./C1.exe 會看到 Hello CYH,
C1.c 程式如下:
#include <stdio.h>
int main()
{
printf( "Hello CYH\r\n" );
return 0;
}


2. 再來測試於 STM32F4 Discovery 上的 uClinux 執行 Linux Device Driver驅動程式: 先 insmod Drv1.ko, 會看到:
Hello, world
name=cyh , age=9999
之後執行 ./AP1.exe, 正確執行, 畫面如下:


uClinux_STM32F4_1.jpg - 嵌入式


 


AP1.c 程式如下:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
int main( int argc, char* argv[] )//stdin=0 out=1 err=2
{
size_t readLen;
int fd;
char BUF[ 64 ]; // mknod /dev/chrDrv1 c 99 0
fd = open ( "/dev/chrDrv1" , O_RDWR );

write ( fd , (void *)"CYH1234567890ABCDEFGHIJ" , 24 );
lseek ( fd , 0, SEEK_SET );

memset(BUF,0,64);
readLen = read ( fd , (void *)BUF, 3 ); // BUF <- "CYH";
printf( "1. BUF=%s\r\n", BUF );

memset(BUF,0,64);
readLen = read ( fd , (void *)BUF, 10 ); // BUF <- "1234567890";
printf( "2. BUF=%s\r\n", BUF );

memset(BUF,0,64);
readLen = read ( fd , (void *)BUF, 10 ); // BUF <- "ABCDEFGHIJ";
printf( "3. BUF=%s\r\n", BUF );

memset(BUF,0,64);
readLen = read ( fd , (void *)BUF, 10 ); // BUF <- EOF or 0;
printf( "BUF=%s\r\n", BUF );

close ( fd ) ;
return 0;
}


1 則留言:

  1. 68國語言翻譯公司2017年11月8日 清晨7:37

    85國語言翻譯公司
     
    提供法文口譯等服務
     
    電話: 02-7726-0956
     
    LINE-ID: 0989298406
     
    PS: 點擊小房子會有優惠喔!!!
     
    華碩翻譯社
     
    英文翻譯|http://bianmiaohun.tctran.com/
     
     

    回覆刪除

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

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