imx6ull裸機開發學習
以下內容是我在學習正點原子imx6ull
開發板alpha
中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊
。
首先使用預設配置檔案,編譯下測試linux能否在板子上執行。配置檔案所在路徑arch/arm/configs/imx_v7_mfg_defconfig
通過修改nxp官方的預設配置檔案和dtb配置檔案,來適配開發板。
imx_v7_mfg_defconfigimx6ull-14x14-evk-emmc.dtb
修改arch/arm/boot/dts
下的makefile
檔案,將修改後的dtb檔案,新增進去。
編譯裝置樹檔案,make dtbs
。
修改主頻和網路驅動(需要保證linux系統可以正常執行,因此需要暫時使用根檔案系統)
pinctrl-names =
"default"
,"state_100mhz"
,"state_200mhz"
; pinctrl-0=
<
&pinctrl_usdhc2_8bit>
; pinctrl-1=
<
&pinctrl_usdhc2_8bit_100mhz>
; pinctrl-2=
<
&pinctrl_usdhc2_8bit_200mhz>
; bus-width =
<
8>
; non-removable;
status =
"okay"
;
修改網路驅動。
修改dts檔案對應位置**如下
pinctrl_spi4: spi4grp
;
spi4 ;}
;
pinctrl_enet1: enet1grp
;pinctrl_enet2: enet2grp
;
&fec1
;&fec2
; ethphy1: ethernet-phy@1;}
;};
修改drivers/net/ethernet/freescale/fec_main.c
中的fec_probe
函式,新增如下**。
/* 設定 mx6ul_pad_enet1_tx_clk 和 mx6ul_pad_enet2_tx_clk
* 這兩個 io 的復用暫存器的 sion 位為 1。
*/void __iomem *imx6u_enet1_tx_clk;
void __iomem *imx6u_enet2_tx_clk;
imx6u_enet1_tx_clk =
ioremap
(0x020e00dc,4
);writel
(0x14
, imx6u_enet1_tx_clk)
;imx6u_enet2_tx_clk =
ioremap
(0x020e00fc,4
);writel
(0x14
, imx6u_enet2_tx_clk)
;
然後編譯下裝置樹檔案,並且在圖形化介面中使能lan8720a
的驅動。
device driversnetwork device support
phy device support and infrastructure
drivers for smsc phys
最後編譯下linux的核心檔案。
然後使用如下命令載入linux映象到記憶體中。
fatload mmc 0:1
80800000 zimage
fatload mmc 0:1
83000000 imx6ull-
14x14-myboard.dts
bootz 80800000
-83000000
IMX6ULL學習筆記(一)
imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。bin檔案前面要新增頭部 ivt boot data dcd資料 由官方手冊可知要燒寫到sd卡中的load.imx檔案在sd卡中的起始位址是0x400,也就是1...
IMX6ULL學習筆記(三)
imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。鏈結指令碼的例子 sections rodata align 4 data align 4 bss start bss align 4 bss end bss ...
正點原子 IMX6ULL學習
啟動檔案.global start 全域性標號 描述 start函式,程式從此函式開始執行,此函式主要功能是設定c 執行環境。start 進入svc模式 mrs r0,cpsr bic r0,r0,0x1f 將r0暫存器中的低5位清零,也就是cpsr的m0 m4 orr r0,r0,0x13 r0或...