Linux IMX6ULL裸機映象製作工具原始碼

2021-10-13 17:56:42 字數 2553 閱讀 2442

creat_imx.c

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#include "create_imx.h"

#define shellcmd_len (200)

#define bin_offset (3072)

/* 此巨集指明是否列印u-boot.imx的ivt dcd表資訊,不同的開發板其ivt和dcd

* 表的資料是不同的,因此需要獲取所使用的開發板的ivt和dcd表資訊,最

* 簡單的方法就是讀取開發板配套資料裡面的u-boot.imx的前1kb資料,理論上

* 應該讀取3kb的資料,但是表資訊遠遠沒有3k這麼多,因此讀1kb即可

*/#define print_tab 0

/* * 介紹: 此軟體是針對nxp的imx6u系列晶元的,軟體用來燒寫bin檔案到sd卡裡面,

* 本軟體會自動新增ivt、dcd等資訊到原始的bin檔案裡面,主要用於裸機和uboot的燒寫。

* 使用方法: 1、編譯好原始的二進位制bin檔案,如,u-boot.bin等,並將編譯好的.bin檔案和本

* 軟體放置到同乙個目錄下!!!!

/* * 輸出一些資訊

*/int main(int argc, char *ar**)

/* 查詢引數,獲取ddr容量 */

for(i = 0; i < argc; i++)

if(argc == 3) /* 三個引數,也就是不輸入ddr容量的話預設為512mb */

ddrsize = 0;

/* 開啟bin檔案 */

fp = fopen(ar**[1], "rb"

); /* 以二進位制唯讀方式開啟bin檔案 */

if(fp == null)

/* 獲取bin檔案長度 */

fseek(fp, 0l, seek_end)

; filelen = ftell(fp)

; fseek(fp, 0l, seek_set)

; printf(

"file %s size = %dbytes\r\n", ar**[1], filelen);

/* 讀取bin檔案到緩衝區buf中 */

buf = malloc(filelen + bin_offset)

; if(buf == null)

memset(buf, 0, filelen + bin_offset)

; /* 清零 */

/* 讀取bin原始碼檔案 */

fread(buf + bin_offset, 1, filelen, fp)

; /* 關閉檔案 */

fclose(fp)

;#if print_tab

printf(

"ivt dcd table:\r\n");

for(i = 0; i < 1024/32; i++)

printf(

"\r\n");

} free(buf)

;return 0;

#endif

/* 新增ivt dcd等表資訊到bin檔案裡面 */

if(ddrsize == 0)

else

if(ddrsize == 1)

* 到乙個檔案中,檔案命名為bare.imx

*/printf(

"delete old bare.imx\r\n");

system(

"rm -rf bare.imx");

printf(

"create new bare.imx\r\n");

system(

"touch bare.imx");

fp = fopen(

"bare.imx", "wb");

if(fp == null)

nbytes = fwrite(buf, 1, filelen + bin_offset, fp)

; if(nbytes !=

(filelen + bin_offset))

free(buf)

; fclose(fp)

;return 0;

}

creat_imx.h

#ifndef _imxdownload_h

#define _imxdownload_h

/* imx6u ivt dcd表資訊 暫時定義為1k bytes,此表是讀取的u-boot.imx前1k bytes

* imx6_ivedcd_table[9]是指明**長度的,本應該根據實際的**長度來修改

* 這裡為了方便,就直接定義為2m bytes,即

*/const int imx6_512mb_ivtdcd_table[256]=;

const int imx6_256mb_ivtdcd_table[256]=;

#endif

IMX6ULL裸機程式 3 按鍵輸入檢測

按鍵輸入檢測採用gpio輸入功能,與gpio輸出功能類似,具體需要如下幾步 gpio初始化 引數1 gpio組 引數2 gpiopin 引數3 gpio屬性 void gpio init gpio type base,int pin,gpio pin config t config int gpio...

IMX6ULL裸機學習(8) 清除BSS段

bss段 bss segment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss段屬於靜態記憶體分配。修改main函式如下所示 include uart.h include led.h int mydata 123...

IMX6ULL裸機第一次彙編點亮LED

部落格介紹 硬體 正點原子linux開發板im6ull 開發環境 ubuntu下的vscode 功能 配置引腳gpio1 io03驅動led的亮滅。參考 imx6ull串列埠手冊.pdf i.mx6u 嵌入式 linux 驅動開發指南 v1.3.pdf leds.s檔案 檔案功能 使用彙編點燈 使用...