0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

i.MX6ULL嵌入式Linux開發(fā)2-uboot移植實踐

碼農愛學習 ? 來源:碼農愛學習 ? 作者:碼農愛學習 ? 2022-03-07 09:00 ? 次閱讀

上篇文章,我們介紹了如何使用NXP原廠的uboot進行編譯和燒寫,將uboot運行在自己的開發(fā)板上。NXP原廠的uboot,直接燒錄到我的開發(fā)板中,LCD的驅動是不正常的,需要進行修改。本篇我們就來繼續(xù)研究uboot,使得uboot能匹配我們自己的開發(fā)板。

修改uboot以匹配開發(fā)板的方式有兩種,一種是在NXP原廠開發(fā)板i.MX 6ULL EVK的文件上進行修改,另一種仿造NXP的開發(fā)板文件,添加自己的開發(fā)板文件。

為了能更多的了解uboot,我們使用代碼改動較大的第二種方式進行uboot的移植。

在修改uboot之前,先來看一下uboot的源碼結構。

1 uboot源碼結構分析

uboot的源碼如下,這里是源碼編譯后的結果,包含編譯后的文件。

pYYBAGIkmyiAHF63AAI2ujfuQG4332.png

這里文件的含義如下:

poYBAGIknveAXMTAAADMA43Ebhk183.png

2 uboot移植實踐

2.1 添加開發(fā)板配置文件

首先是創(chuàng)建自己開發(fā)板的配置文件,該文件可參考原廠開發(fā)板的配置文件,在configs文件夾下,將原來的默認配置文件mx6ull_14x14_evk_emmc_defconfig復制一份,并重命名為mx6ull_myboard_defconfig,該文件即用于作為自己開發(fā)板的配置文件。

然后進行內容修改,將原始內容:

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"

CONFIG_ARM=y

CONFIG_ARCH_MX6=y

CONFIG_TARGET_MX6ULL_14X14_EVK=y

CONFIG_CMD_GPIO=y

修改為:

poYBAGIknwGAYVEbAABULjdLa_U653.png

2.2 添加開發(fā)板對應的頭文件

在目錄 include/configs 下添加自己開發(fā)板對應的頭文件,復制mx6ullevk.h,并重命名為mx6ull_myboard.h,將文件中的

#ifndef __MX6ULLEVK_CONFIG_H 

#define __MX6ULLEVK_CONFIG_H 

修改為:

pYYBAGIknwqAesVGAAD30cp8rZk962.png

該文件里面有很多宏定義,這些宏定義基本用于配置uboot,如果我們自己要想使能或者禁止uboot的某些功能,那就要在這里面修改。

在ubuntu中,可以安裝VS Code軟件來輔助查看代碼,在ubuntu中安裝vscode,需要先下載deb格式的安裝包,然后使用類似如下的指令即可進行安裝:

sudo dpkg -i code_1.58.0-1625728071_amd64.deb

安裝完之后,我們可以將圖標添加到ubuntu桌面上,ubuntu安裝的所有軟件圖標都在目錄/usr/share/applications中,找到 Visual Studio Code 的圖標,然后點擊鼠標右鍵,選擇復制到->桌面即可。

2.3 添加開發(fā)板對應的板級文件夾

uboot中每個板子都有一個對應的文件夾來存放板級文件(如開發(fā)板上外設驅動文件等)。NXP的I.MX系列芯片的所有板級文件夾都存放在 board/freescale/目錄下,在這個目錄下有個名為mx6ullevk的文件夾,原廠開發(fā)板的板級文件夾。

復制 mx6ullevk,將其重命名為mx6ull_myboard,進入mx6ull_myboard目錄中, 將其中的mx6ullevk.c文件重命名為mx6ull_myboard.c

2.3.1 修改Makefile文件

首先是修改 board/freescale/mx6ull_myboard 目錄下的Makefile文件

將原始內容:

# (C) Copyright 2015 Freescale Semiconductor, Inc.
#
# SPDX-License-Identifier:      GPL-2.0+
#

obj-y  := mx6ullevk.o

extra-$(CONFIG_USE_PLUGIN) :=  plugin.bin
$(obj)/plugin.bin: $(obj)/plugin.o
        $(OBJCOPY) -O binary --gap-fill 0xff $< $@

其中的依賴項修改為:

obj-y  := mx6ull_myboard.o
poYBAGIknxeAKtryAAD0U-S7ANw286.png

這樣才會編譯mx6ull_myboard.c這個文件。

2.3.2 修改imximage.cfg文件

然后修改 board/freescale/mx6ull_myboard 目錄下的imximage.cfg文件

imximage.cfg中的下面一句:

PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000

改為:

PLUGIN board/freescale/mx6ull_myboard/plugin.bin 0x00907000 
pYYBAGIknyGADJeEAADZEzwpZ8I551.png

2.3.3 修改Kconfig文件

接著修改 board/freescale/mx6ull_myboard 目錄下的Kconfig文件

將原始內容:

if TARGET_MX6ULL_14X14_EVK || TARGET_MX6ULL_9X9_EVK

config SYS_BOARD
        default "mx6ullevk"

config SYS_VENDOR
        default "freescale"

config SYS_CONFIG_NAME
        default "mx6ullevk"

endif

修改為:

poYBAGIknyeALz-aAADeakyrf24286.png

2.3.4 修改MAINTAINERS文件

再接著修改 board/freescale/mx6ull_myboard 目錄下的MAINTAINERS文件

將原始內容:

MX6ULLEVK BOARD

M:    Peng Fan 

S:    Maintained

F:    board/freescale/mx6ullevk/

F:    include/configs/mx6ullevk.h

F:    configs/mx6ull_14x14_evk_defconfig

F:    configs/mx6ull_9x9_evk_defconfig@nxp.com>

修改為:

poYBAGIkny6AFHmIAADXD9ubKrU406.png

2.3.5 重命名板子的c文件

將 board/freescale/mx6ull_myboard 目錄下原來的mx6ullevk.c重命名為mx6ull_myboard.c

pYYBAGIknzWAS1-NAABgISCKEAs594.png

2.4 修改U-Boot圖形界面配置文件

最后修改arch/arm/cpu/armv7/mx6/目錄下的Kconfig文件

注意這里的Kconfig和board/freescale/mx6ull_myboard目錄下的Kconfig是不一樣的。

在207行插入一些內容:

config TARGET_MX6ULL_MYBOARD
        bool "Support mx6ull_myboard"
        select MX6ULL
        select DM
        select DM_THERMAL
poYBAGIkn0GAfgfjAADb3OlIp28716.png

然后,在最后一行的endif的前一行添加如下內容:

source "board/freescale/mx6ull_myboard/Kconfig" 

pYYBAGIkn0iAPMWfAADS4GTjqck909.png

2.5 創(chuàng)建編譯腳本

在uboot-imx-rel_imx_4.1.15_2.1.0_ga目錄下新建一個名為build_myboard.sh的 shell 腳本,寫入如下內容:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_myboard_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

至此,以上完成的工作,相當于將NXP原廠開發(fā)板相關的配置文件,重新復制了一份,并對板子名稱修改為了自己板子的名字。

此時執(zhí)行./build_myboard.sh,等待編譯完成后輸入如下命令:

grep -nR "mx6ull_myboard.h"

如果有很多文件都引用了這個頭文件, 那就說明新板子添加成功:

poYBAGIkn1GAPQNFAAGGYj6RLgk310.png

將uboot進行編譯并運行,實際的效果應該和原廠uboot的效果一樣(LCD無法顯示)。

pYYBAGIkm3GAEMpOAAG0N0RJp_Q768.png

總結一下剛才都有哪些修改:

右端灰色的為原廠開發(fā)板的相關文件,黃色的為模仿原廠文件,新添加并修改的自己開發(fā)板的文件。

pYYBAGIkn1iAXJZUAADvQpXtKgY745.png

下面進行LCD驅動的修改。

3 LCD驅動的修改

一般uboot中修改驅動都是在對應板子c文件和h文件,即board/freescale/mx6ull_myboard/mx6ull_myboard.cinclude/configs/mx6ull_myboard.h這兩個文件。

一般修改 LCD 驅動重點注意以下幾點:

LCD 所使用的 GPIO,查看 uboot 中 LCD 的 IO 配置是否正確

LCD 背光引腳 GPIO 的配置

LCD 配置參數(shù)是否正確

正點原子以及野火的I.MX6ULL開發(fā)板的LCD原理圖和NXP官方的開發(fā)板一致,也就是LCD的IO和背光IO都是一樣的, 所以IO部分就不用修改了,只需修改之后的LCD參數(shù)。

3.1 修改c文件配置

打開文件 mx6ull_myboard.c,需要修改下面這段內容:

struct display_info_t const displays[] = {{
	.bus = MX6UL_LCDIF1_BASE_ADDR,
	.addr = 0,
	.pixfmt = 24,
	.detect = NULL,
	.enable	= do_enable_parallel_lcd,
	.mode	= {
		.name			= "TFT43AB",
		.xres           = 480,
		.yres           = 272,
		.pixclock       = 108695,
		.left_margin    = 8,
		.right_margin   = 4,
		.upper_margin   = 2,
		.lower_margin   = 4,
		.hsync_len      = 41,
		.vsync_len      = 10,
		.sync           = 0,
		.vmode          = FB_VMODE_NONINTERLACED
} } };

先來分析一下這段代碼,該代碼定義了一個變量displays,類型為display_info_t,這個結構體是LCD信息結構體,其中包括了LCD的分辨率,像素格式,LCD的各個參數(shù)等。

display_info_t 定義在文件 arch/arm/include/asm/imx-common/video.h 中,定義如下:

struct display_info_t {
	int	bus;
	int	addr;
	int	pixfmt;
	int	(*detect)(struct display_info_t const *dev);
	void (*enable)(struct display_info_t const *dev);
	struct	fb_videomode mode;
};

這里的pixfmt是像素格式,也就是一個像素點是多少位,如果是RGB565的話就是16位,如果是RGB888的話就是24位,一般使用 RGB888。

結構體display_info_t還有個mode成員變量,此成員變量也是個結構體,為fb_videomode,定義在文件 include/linux/fb.h 中,定義如下:

struct fb_videomode {
	const char *name;	/* optional */
	u32 refresh;		/* optional */
	u32 xres;
	u32 yres;
	u32 pixclock;
	u32 left_margin;
	u32 right_margin;
	u32 upper_margin;
	u32 lower_margin;
	u32 hsync_len;
	u32 vsync_len;
	u32 sync;
	u32 vmode;
	u32 flag;
};

結構體b_videomode里面的成員變量為LCD的參數(shù),這些成員變量函數(shù)如下:

name :LCD 名字,要和環(huán)境變量中的 panel 相等

xres 、yres :LCD X 軸和 Y 軸像素數(shù)量

pixclock:像素時鐘,每個像素時鐘周期的長度,單位為皮秒

left_margin :HBP(horizontal back porch),水平同步后肩

right_margin :HFP(horizontal front porch),水平同步前肩

upper_margin:VBP(vertical back porch),垂直同步后肩

lower_margin:VFP(vertical front porch),垂直同步前肩

hsync_len :HSPW(horizontal sync pulse width),行同步脈寬

vsync_len:VSPW(vertical sync pulse width),垂直同步脈寬

vmode :大多數(shù)使用 FB_VMODE_NONINTERLACED,也就是不使用隔行掃描。

這些參數(shù)需要與實用的LCDd的參數(shù)一致。

野火的7寸RGB屏幕(GT911,800x480)的一些參數(shù)如下:

參數(shù)
width 800
height 480
HBP 46
HFP 22
VBP 23
VFP 22
HSW 1
VSW 1

注意像素時鐘pixclock的計算方法:以野火的 7 寸RGB屏為例,屏幕要求的像素時鐘為27.4MHz,因此:pixclock=(1/27400000)*10^12=36496

像素時鐘就是 RGB LCD 的時鐘信號,以 GT911這款屏幕為例,顯示一幀圖像所需要的時鐘數(shù)就是: (VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP) = (1 + 23 + 480+ 22) * (1+ 46+ 800+ 22) = 526* 869 = 457094。 顯示一幀圖像需要457094個時鐘數(shù), 那么顯示60幀就是: 457094* 60 = 27425640≈27.4M,所以像素時鐘就是27.4MHz

由以上的屏幕參數(shù),可以得出GT911屏幕的配置參數(shù)如下:

struct display_info_t const displays[] = {{
	.bus = MX6UL_LCDIF1_BASE_ADDR,
	.addr = 0,
	.pixfmt = 24,
	.detect = NULL,
	.enable	= do_enable_parallel_lcd,
	.mode	= {
		.name			= "GT911",
		.xres           = 800,
		.yres           = 480,
		.pixclock       = 36496,
		.left_margin    = 46,  //HBPD
		.right_margin   = 22,  //HFPD
		.upper_margin   = 23,  //VBPD
		.lower_margin   = 22,  //VFPD
		.hsync_len      = 1,   //HSPW
		.vsync_len      = 1,   //VSPW
		.sync           = 0,
		.vmode          = FB_VMODE_NONINTERLACED
} } };

3.2 修改h文件配置

另外還要修改include/configs/路徑下的mx6ull_myboard.h,找到所有如下語句:

panel=TFT43AB 

修改為:

panel=GT911 //與mx6ull_myboard.c中修改的名稱保持一致

修改完成以后重新編譯一遍 uboot 并燒寫到 SD 中啟動。

3.3 編譯測試

將修改后的uboot編譯下載以后,LCD 驅動一般就會工作正常了,LCD 上會顯示 NXP 的 logo。

pYYBAGIkn4uAY_XYAAJNDJM4vZQ651.png

但某些情況有可能還會遇到LCD 并沒有工作,還是黑屏,這是什么原因呢?

在 uboot 命令模式輸入“print”來查看環(huán)境變量 panel 的值,會發(fā)現(xiàn)panel的值要是TFT43AB(或其他的,反正不是GT911):

panel=TFT43AB
script=boot.scr

Environment size: 2431/8188 bytes
=>

這是因為之前有將環(huán)境變量保存到EMMC中,uboot啟動以后會先從EMMC中讀取環(huán)境變量,如果EMMC中沒有環(huán)境變量的話才會使用 mx6ull_alientek_emmc.h 中的默認環(huán)境變量。

如果EMMC中的環(huán)境變量panel不等于GT911,那么LCD顯示肯定不正常,我們只需要在uboot中修改panel的值為GT911即可,在uboot的命令模式下輸入如下命令:

setenv panel GT911 
saveenv 

上述命令修改環(huán)境變量panel為GT911并保存后,按下復位鍵重啟uboot,此時 LCD 驅動就工作正常了。

4 網絡測試

I.MX6ULL內部有個以太網MAC外設,也就是ENET,需要外接一個PHY芯片來實現(xiàn)網絡通信功能,也就是內部MAC+外部PHY芯片的方案。 I.MX6ULL有兩個網絡接口ENET1和ENET2,野火的開發(fā)板提供了這兩個網絡接口,其中ENET1和ENET2都使用是和原廠開發(fā)板一樣的KSZ8081作為PHY芯片。

因此,網絡驅動部分的uboot不需要修改,下面就只是來測試一下網路功能。

4.1 連接網線并查看啟動情況

首先將開發(fā)板通過網線連接到局域網的路由器中(自己的電腦也要在同一個局域網,這樣ubuntu虛擬機則也在同一個局域網)。

poYBAGIkn5WAXyw0AAFv68IZ4Nk267.png

然后啟動uboot,串口查看相關的打印信息,如下圖,可以看到網絡端口的FEC1(注意是uboot程序中默認設置的,不是因為網線插在了左邊就自動識別FEC1),但是提示網絡地址未設置。

pYYBAGIkn5yAaYUzAACJ42Ab5ao217.png

4.2 設置網絡參數(shù)

下面就來設置一下,首先是設置開發(fā)板的IP,在設置之前,先借助Windows電腦的cmd的ping+ip指令來測試某個IP是否被使用,如我的192.168.5.102未被使用,就可以設為開發(fā)板的IP。

poYBAGIkn6KAP3htAAFt7L5Z3dk485.png

除了設置開發(fā)板的IP,還要設置一些其它的網絡參數(shù),具體如下:

setenv ipaddr 192.168.5.102 //開發(fā)板 IP 地址
setenv ethaddr 00:04:9f:04:d2:35 //開發(fā)板網卡 MAC 地址
setenv gatewayip 192.168.5.1 //開發(fā)板默認網關
setenv netmask 255.255.255.0 //開發(fā)板子網掩碼
setenv serverip 192.168.5.101 //服務器地址,也就是 Ubuntu 地址
saveenv //保存環(huán)境變量

開發(fā)板的MAC地址是一個長度為48位(6個字節(jié))的地址,每個字節(jié)間通過冒號間隔,理論上只要局域網內各網絡設備不沖突,該地址可任意設置。

局域網的默認網關和子網掩碼需要根據自己的實際情況設置(不知道是多少的,可以借助Windows電腦的cmd中的ipconfig指令來查看)

服務器的地址就是ubuntu虛擬機的地址(可以通過linux的ifconfig指令來查看)

4.3 測試另一個網口

打開 include/configs/mx6ull_alientek_emmc.h ,將CONFIG_FEC_ENET_DEV修改為 0, 重新編譯uboot并燒寫到SD卡中。

poYBAGIkn6uAKj6lAADkHAFyN7s856.png

將網線連接到開發(fā)板右邊的網口上,按照之前的測試方法再次測試:

pYYBAGIkn7GAHOR2AABhsRbZLok824.png

5 uboot啟動Linux內核測試

uboot的最終目的就是啟動Linux內核,所以需要通過啟動Linux內核來判斷uboot移植是否成功。

啟動Linux內核。我們測試兩種啟動Linux內核的方法:

從EMMC啟動

從網絡啟動

從EMMC啟動也就是將編譯出來的Linux鏡像文件zImage設備樹文件保存在EMMC中,uboot從EMMC中讀這兩個文件并啟動。 由于我們板子的EMMC中可能還沒有l(wèi)inux鏡像文件和設備樹文件,所以先不測試這種方法。

從網絡啟動,是指將linux鏡像文件和根文件系統(tǒng)都放到Ubuntu下某個指定的文件夾中,然后通過nfs或者tftp等傳輸方式將系統(tǒng)文件(zImage和設備樹文件)從Ubuntu中直接下載到開發(fā)板的內存中,EMMC中則不需要有系統(tǒng)文件。這種方式的作用就是方便調試,免去將代碼固化到開發(fā)板的過程。當然,當開發(fā)板掉電,內存的系統(tǒng)文件就沒了。

下面就來通過網絡調試的方法來測試uboot是否能正常啟動Linux內核。

在測試之前,先來介紹一下在ubuntu虛擬機上如何搭建tftp來傳輸文件。

5.1 tftp服務搭建

Ubuntu上搭建TFTP服務器,需要安裝tftp-hpatftpd-hpa,命令如下:

sudo apt-get install tftp-hpa tftpd-hpa 
sudo apt-get install xinetd 

TFTP也需要一個文件夾來存放文件,在用戶目錄下新建一個目錄,示例命令如下:

mkdir /home/xxpcb/myTest/tftpdir
chmod 777 /home/xxpcb/myTest/tftpdir

最后配置 tftp, 安裝完成以后,新建文件/etc/xinetd.d/tftp, 如果沒有/etc/xinetd.d 目錄的話自行創(chuàng)建,然后在里面輸入如下內容:

server tftp 
{ 
    socket_type    = dgram 
    protocol       = udp 
    wait           = yes 
    user           = root 
    server         = /usr/sbin/in.tftpd 
    server_args    = -s /home/xxpcb/myTest/tftpdir/ 
    disable        = no 
    per_source     = 11 
    cps            = 100 2 
    flags          = IPv4 
}

完了以后啟動tftp服務,命令如下:

sudo service tftpd-hpa start 

打開/etc/default/tftpd-hpa文件,將其修改為如下所示內容:

# /etc/default/tftpd-hpa 

TFTP_USERNAME="tftp" 
TFTP_DIRECTORY="/home/xxpcb/myTest/tftpdir"  
TFTP_ADDRESS=":69"                                 
TFTP_OPTIONS="-l -c -s"  

TFTP_DIRECTORY就是我們上面創(chuàng)建的tftp文件夾目錄,以后我們就將所有需要通過TFTP傳輸?shù)奈募挤诺竭@個文件夾里面,并且要給予這些文件相應的權限。

最后輸入如下命令, 重啟 tftp 服務器:

sudo service tftpd-hpa restart

至此,tftp服務器已經搭建好了,可以先來測試一下功能是否正常。

5.2 tftp文件傳輸測試

測試tftp功能是否正常,主要分為兩步:

首先是將某個zImage鏡像文件拷貝到ubuntu虛擬機的tftpboot文件夾中,并且給予 zImage 相應777的權限。

然后是通過開發(fā)板uboot的串口交互指令將文件從ubuntu傳輸?shù)介_發(fā)板的內存。

uboot串口交互指令中的tftp命令格式如下:

tftpboot [loadAddress] [[hostIPaddr:]bootfilename]

loadAddress是文件在DRAM中的存放地址,[[hostIPaddr:]bootfilename]是要從Ubuntu中下載的文件。

tftp傳輸文件,不需要輸入文件在Ubuntu中的完整路徑,只需要輸入文件名即可。

比如我們現(xiàn)在將tftpboot文件夾里面的zImage文件下載到開發(fā)板DRAM的0X80800000地址處,命令如下:

tftp 80800000 zImage 
pYYBAGIkn7uAcXSoAABhMTS3yCk946.png

注:此次測試時,我的ubuntu虛擬機(作為tftp服務器)的IP變了,所以我又重新設置了ubuntu的IP

5.3 測試從網絡啟動Linux

設置環(huán)境變量

這兩個環(huán)境變量的具體含義先不展開討論。

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' 
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-evk-emmc.dtb; bootz 80800000 - 83000000' 
saveenv 

通過tftp將zImage和設備樹下載到板子的RAM中

就是通過網路的方式(tftp)將系統(tǒng)文件下載到板子的內存中,這里使用的野火提供的yocto的zImage和dtb文件,將兩個文件輔助到ubuntu的tftp服務器目錄,依次輸入如下指令:

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk-emmc.dtb

啟動內核

bootz 80800000 - 83000000
poYBAGIkn8GAf1hQAAGU2tc0EpA235.png

可以看到Starting kernel ...的字樣,表示內核已經啟動。

再看看下板子,已經有啟動畫面了:

poYBAGIkn8eAFWahAAF3D_aFobI186.png

在過一會兒,會出現(xiàn)系統(tǒng)的圖形界面,只是現(xiàn)在還不能操作,觸摸沒反應。

pYYBAGIkn82AU_8qAAK3Luvf9HQ049.png

至此,uboot的移植基本完成,可以啟動Linux內核。啟動內核之后,uboot的使命就完成了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5060

    文章

    18975

    瀏覽量

    302094
  • Linux
    +關注

    關注

    87

    文章

    11212

    瀏覽量

    208723
  • Uboot
    +關注

    關注

    4

    文章

    125

    瀏覽量

    28127
  • i.MX6
    +關注

    關注

    1

    文章

    37

    瀏覽量

    16272
  • 系統(tǒng)移植

    關注

    0

    文章

    16

    瀏覽量

    4815
收藏 人收藏

    評論

    相關推薦

    i.MX6ULL嵌入式Linux開發(fā)1-uboot移植初探

    本系列教程以i.MX6ULL處理器的ARM開發(fā)板為實驗基礎,學習記錄嵌入式Linux開發(fā)的各種知識與經驗,主要內容包括
    的頭像 發(fā)表于 03-07 08:57 ?3833次閱讀
    <b class='flag-5'>i.MX6ULL</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)</b>1-<b class='flag-5'>uboot</b><b class='flag-5'>移植</b>初探

    如何在嵌入式Linux開發(fā)板上配置Qt運行環(huán)境

    本文基于I.MX6ULL芯片的Linux開發(fā)板,介紹如何在嵌入式Linux開發(fā)板上配置Qt運行環(huán)
    發(fā)表于 10-10 09:56 ?2546次閱讀

    使用i.MX6ULL開發(fā)板進行Linux根文件系統(tǒng)的完善

    上一篇推文講了怎么移植根文件系統(tǒng),并在i.MX6ULL開發(fā)板中運行起來,但是會出現(xiàn)一些提示,現(xiàn)在來進行根文件的完善。
    發(fā)表于 10-17 11:13 ?755次閱讀

    移植NXP官方linux 5.4內核到i.MX6ULL開發(fā)

    本文描述移植NXP官方 linux 5.4 內核到i.MX6ULL開發(fā)板。
    發(fā)表于 12-19 11:10 ?1994次閱讀

    i.MX6UL/i.MX6ULL開發(fā)常見問題】單獨編譯內核,uboot生成很多文件,具體用哪一個?

    i.MX6UL/i.MX6ULL開發(fā)常見問題》基于米爾電子 i.MX6UL/i.MX6ULL產品(V.10)2.3單獨編譯內核,
    發(fā)表于 07-01 17:50

    移植5.4內核到迅為I.MX6ULL開發(fā)

    在光盤資料的“i.MX6UL終結者光盤資料\05_uboot linux源碼”目錄下“i.MX6ULL_Kernel_5.4.3.tar.bz2”)。下面我們通過git下載5.4.3內
    發(fā)表于 06-29 10:13

    i.MX6ULL開發(fā)板硬件資源

    迅為i.MX6ULL 終結者開發(fā)板硬件資源非常豐富,幾乎將 i.MX6ULL 芯片的所有資源都擴展引出到底板上了,底板提供了豐富的外設接口,開發(fā)板的尺寸是 190mm*125mm,充分
    發(fā)表于 12-29 06:18

    Linux內核在i.mx6ull中的編譯運行

    Linux內核在i.mx6ull的編譯運行編譯Linux Kernel需要使用lzop庫,所以需要安裝,否則編譯內核會失?。。?!sudo apt-get install lzop一、Linux
    發(fā)表于 11-05 07:14

    初識 i.MX6ULL 寄存器

    裸機開發(fā)_L1_匯編LED實驗0. 本節(jié)目標1. 硬件層電路2. 初識 i.MX6ULL 寄存器2.1 i.MX6ULL 時鐘控制寄存器2.2 i.
    發(fā)表于 12-20 07:13

    如何選擇嵌入式Linux開發(fā)電腦

    基礎熟悉計算機。環(huán)境說明windows10參考資料正點原子書本:ARM裸機與嵌入式Linux驅動開發(fā)正點原子文檔:I.MX6ULL開發(fā)指南N
    發(fā)表于 12-21 06:40

    i.MX6ULL的相關資料下載

    i.MX6ULL終結者三大手冊,加速學習和開發(fā)速度,一秒化無形!《嵌入式Linux開發(fā)指南》+《開發(fā)
    發(fā)表于 12-27 06:13

    飛凌i.MX6ULL開發(fā)板的評測,再次進階擁有更高的性價比

    處理器MCIMX6Y2開發(fā)設計,采用先進的ARMCortex-A7內核,運行速度高達800MHz。i.MX6ULL應用處理器包括一個集成的電源管理模塊,降低了外接電源的復雜性,并簡化了上電時序。
    發(fā)表于 10-27 11:55 ?1449次閱讀
    飛凌<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開發(fā)</b>板的評測,再次進階擁有更高的性價比

    【北京迅為】i.MX6ULL開發(fā)移植 Debian 文件系統(tǒng)

    【北京迅為】i.MX6ULL開發(fā)移植 Debian 文件系統(tǒng)
    的頭像 發(fā)表于 02-10 15:34 ?1094次閱讀
    【北京迅為】<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開發(fā)</b>板<b class='flag-5'>移植</b> Debian 文件系統(tǒng)

    入門級嵌入式板卡的視頻工具FFmpeg移植與測試開發(fā)——米爾i.MX6UL/i.MX6ULL開發(fā)

    本篇測評由電子發(fā)燒友的優(yōu)秀測評者“ALSET”提供。電子發(fā)燒友網發(fā)布了一款產品:米爾MYD-Y6ULX-V2開發(fā)板,基于NXPi.MX6UL/i.MX6ULL處理器,該
    的頭像 發(fā)表于 03-02 09:42 ?2758次閱讀
    入門級<b class='flag-5'>嵌入式</b>板卡的視頻工具FFmpeg<b class='flag-5'>移植</b>與測試<b class='flag-5'>開發(fā)</b>——米爾<b class='flag-5'>i.MX6</b>UL/<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開發(fā)</b>板

    【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)
    的頭像 發(fā)表于 10-22 14:46 ?458次閱讀
    【北京迅為】<b class='flag-5'>i.mx</b>8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>開發(fā)</b>指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>移植</b>篇第六十九章<b class='flag-5'>uboot</b><b class='flag-5'>移植</b>