精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

BSP工程管理——I.MAX6Ull裸機(jī)開(kāi)發(fā)

華仔的編程隨筆 ? 來(lái)源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-05-03 13:58 ? 次閱讀

bsp工程管理

新建文件夾led_bsp

  1. 下面新建bsp用來(lái)存放驅(qū)動(dòng)文件;
  2. imx6ul用來(lái)存放跟芯片有關(guān)的文件,比如NXP官方的SDK庫(kù)文件;
  3. obj用來(lái)存放編譯生成的.o文;
  4. project存放start.S和main.c.
    380bbabbcfdc0ab374b938454e649b9b77ac6d6fcfe3decb136bf17d3a7775c0.png
  5. 將前面我們使用的cc.h、fsl_common.h、fsl_iomuxc.h 和 MCIMX6Y2.h這4個(gè)文件復(fù)制到文件夾imx6ul中;
  6. 在bsp目錄下新建clk、delay、led分別存放時(shí)鐘驅(qū)動(dòng)、延時(shí)驅(qū)動(dòng)、LED驅(qū)動(dòng)
    99008454afe7d19dc9c20268d4f4a889a587d8bbe4706f4239052e3151db4ed0.png
  7. 編寫(xiě)imx6ul.h文件:
#ifndef __IMX6UL_H
#define __IMX6UL_H
/***************************************************************
Copyright ? lugl Co., Ltd. 1998-2023. All rights reserved.
文件名	: 	 imx6ul.h
作者	   : 劉建華
版本	   : V1.0
描述	   : 包含一些常用的頭文件。
其他	   : 此文件,學(xué)習(xí)正點(diǎn)原子左忠凱老師例程編寫(xiě)
論壇 	   :
日志	   : 初版V1.0 2023/5/3 劉建華創(chuàng)建
***************************************************************/
#include "cc.h"
#include "MCIMX6Y2.h"
#include "fsl_common.h"
#include "fsl_iomuxc.h"

#endif

這樣以后,其他的文件中任間引用imx6ul.h就可以了。

重寫(xiě)LED驅(qū)動(dòng)代碼

新建bsp_led.c、bsp_led.h兩個(gè)文件,將這兩個(gè)文件存放在bsp/led目錄下面。

bsp_led.h內(nèi)容如下

#ifndef __BSP_LED_H
#define __BSP_LED_H
/***************************************************************
Copyright ? lugl Co., Ltd. 1998-2023. All rights reserved.
文件名	: 	 bsp_led.h
作者	   : 劉建華
版本	   : V1.0
描述	   : LED驅(qū)動(dòng)頭文件。
其他	   : 此文件,學(xué)習(xí)正點(diǎn)原子左忠凱老師例程編寫(xiě)
論壇 	   :
日志	   : 初版V1.0 2023/5/3 劉建華創(chuàng)建
************************************************************/
#define LED0 0

/***  函數(shù)聲明 *******/
void led_init(void);
void led_switch(int led, int status);
#endif

bsp_led.c內(nèi)容如下:

#include "bsp_led.h"
/***************************************************************
Copyright ? lugl Co., Ltd. 1998-2023. All rights reserved.
文件名	: 	 bsp_led.c
作者	   : 劉建華
版本	   : V1.0
描述	   : LED驅(qū)動(dòng)文件。
其他	   : 此文件,學(xué)習(xí)正點(diǎn)原子左忠凱老師例程編寫(xiě)
論壇 	   :
日志	   : 初版V1.0 2023/5/3 劉建華創(chuàng)建
************************************************************/
/**********

* @description :初始化LED對(duì)應(yīng)的GPIO
* @param[in]   :無(wú)
* @return      :無(wú)
* 

*/
void led_init(void)
{
IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);		/* 復(fù)用為GPIO1_IO03 */
IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03,0X10B0);
GPIO1- >GDIR |= (1 < < 3);  /*  初始化GPIO,GPIO1_IO03設(shè)置為輸出*/
GPIO1- >DR &= ~(1 < < 3);	  /*  設(shè)置GPIO1_IO03輸出低電平,打開(kāi)LED0*/
}
/*

* @description		: LED控制函數(shù),控制LED打開(kāi)還是關(guān)閉
* @param - led		: 要控制的LED燈編號(hào)
* @param - status	: 0,關(guān)閉LED0,1 打開(kāi)LED0
* @return 			: 無(wú)
  */
void led_switch(int led, int status)
{
switch (led)
{
case LED0:
if(status == ON)
GPIO1- >DR &= ~(1< DR |= (1< 

編寫(xiě)時(shí)鐘驅(qū)動(dòng)代碼

新建bsp_clk.h、bsp_clk.c兩個(gè)文件,將這兩個(gè)文件放到bsp/clk文件夾中。兩個(gè)文件分別如下:

bsp_clk.h:

#ifndef __BSP_CLK_H
#define __BSP_CLK_H
/***************************************************************
Copyright ? lugl Co., Ltd. 1998-2023. All rights reserved.
文件名	: 	 bsp_clk.h
作者	   : 劉建華
版本	   : V1.0
描述	   : 系統(tǒng)時(shí)鐘驅(qū)動(dòng)頭文件。
其他	   : 此文件,學(xué)習(xí)正點(diǎn)原子左忠凱老師例程編寫(xiě)
論壇 	   :
日志	   : 初版V1.0 2023/5/3 劉建華創(chuàng)建
************************************************************/
#include "imx6ul.h"

void clk_init(void);

#endif

bsp_clk.c

/***************************************************************
Copyright ? lugl Co., Ltd. 1998-2023. All rights reserved.
文件名	: 	 bsp_clk.c
作者	   : 劉建華
版本	   : V1.0
描述	   : 系統(tǒng)時(shí)鐘 驅(qū)動(dòng)文件。
其他	   : 此文件,學(xué)習(xí)正點(diǎn)原子左忠凱老師例程編寫(xiě)
論壇 	   :
日志	   : 初版V1.0 2023/5/3 劉建華創(chuàng)建
************************************************************/
#include "bsp_clk.h"

/***

* @description :初始化I.MAX6U所有外設(shè)時(shí)鐘
* @param[in]   :無(wú)
* @return      :無(wú)
* 

*/
void clk_enable(void)
{
CCM- >CCGR0 = 0XFFFFFFFF;
CCM- >CCGR1 = 0XFFFFFFFF;
CCM- >CCGR2 = 0XFFFFFFFF;
CCM- >CCGR3 = 0XFFFFFFFF;
CCM- >CCGR4 = 0XFFFFFFFF;
CCM- >CCGR5 = 0XFFFFFFFF;
CCM- >CCGR6 = 0XFFFFFFFF;
}

bsp_delay驅(qū)動(dòng),直接拷貝左老師的文件

修改main.c文件如下

/***************************************************************
Copyright ? lugl.
文件名 : main.c
作者 : 劉建華
版本 : V1.0
描述 :
其他 : 此程序?qū)W習(xí)左中凱老師課程
日志 : 初版 2023/5/3劉建華修改
**************************************************************/
#include "bsp_clk.h"
#include "bsp_led.h"
#include "bsp_delay.h"

/************************************************************

* @descriptions: main函數(shù)
* @param       : 無(wú)
* @return      : 無(wú)
  *************************************************************/
  int main(void)
  {
  clk_enable();
  led_init();
  while (1)
  {
  led_switch(LED0,ON);
  delay(500);
  led_switch(LED0,OFF);
  delay(500);
  }
  return 0;
  }

編寫(xiě)Makefile如下:

CROSS_COMPILE 	?= arm-linux-gnueabihf-
TARGET		  	?= bsp

CC 				:= $(CROSS_COMPILE)gcc
LD				:= $(CROSS_COMPILE)ld
OBJCOPY 		:= $(CROSS_COMPILE)objcopy
OBJDUMP 		:= $(CROSS_COMPILE)objdump

INCDIRS 		:= imx6ul 
bsp/clk 
bsp/led 
bsp/delay

SRCDIRS			:= project 
bsp/clk 
bsp/led 
bsp/delay

INCLUDE			:= $(patsubst %, -I %, $(INCDIRS))

SFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
CFILES			:= $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))

SFILENDIR		:= $(notdir  $(SFILES))
CFILENDIR		:= $(notdir  $(CFILES))

SOBJS			:= $(patsubst %, obj/%, $(SFILENDIR:.S=.o))
COBJS			:= $(patsubst %, obj/%, $(CFILENDIR:.c=.o))
OBJS			:= $(SOBJS) $(COBJS)

VPATH			:= $(SRCDIRS)

.PHONY: clean

$(TARGET).bin : $(OBJS)
$(LD) -Timx6ul.lds -o $(TARGET).elf $^
$(OBJCOPY) -O binary -S $(TARGET).elf $@
$(OBJDUMP) -D -m arm $(TARGET).elf > $(TARGET).dis

$(SOBJS) : obj/%.o : %.S
$(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $ 

$(COBJS) : obj/%.o : %.c
$(CC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $ 

clean:
rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)

imx6ul.lds:

SECTIONS{
. = 0X87800000;
.text :
{
obj/start.o
*(.text)
}
.rodata ALIGN(4) : {*(.rodata*)}
.data ALIGN(4)   : { *(.data) }
__bss_start = .;
.bss ALIGN(4)  : { *(.bss)  *(COMMON) }
__bss_end = .;
}

至此,程序重構(gòu)完成,我們把文件拷到虛擬機(jī)進(jìn)行編譯,并燒寫(xiě)到SD卡:

8956843ca6c12a5282a8aa3e0a8ba00464bd21bafa03e79f154bc26493f6c012.png

燒到開(kāi)發(fā)板后,LED0燈成功閃亮。

小結(jié)

本篇學(xué)習(xí)了bsp工程的創(chuàng)建管理,工程目錄結(jié)構(gòu)為bsp、imx6ul、obj、project來(lái)分片管理,bsp中又分為bsp_clk、bsp_led、bsp_delay來(lái)分片管理。最后學(xué)習(xí)了Makefile的創(chuàng)建,為以后工程使用提供基礎(chǔ)的結(jié)構(gòu)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1720

    瀏覽量

    131364
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4306

    瀏覽量

    62430
  • BSP
    BSP
    +關(guān)注

    關(guān)注

    1

    文章

    86

    瀏覽量

    26109
  • i.MX6
    +關(guān)注

    關(guān)注

    1

    文章

    37

    瀏覽量

    16279
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    IMX6ULL正點(diǎn)原子開(kāi)發(fā)板LED驅(qū)動(dòng)

    用C語(yǔ)言裸機(jī)編程驅(qū)動(dòng)正點(diǎn)原子I.MAX6ULL開(kāi)發(fā)板上的LED燈
    的頭像 發(fā)表于 05-02 15:22 ?25.9w次閱讀
    IMX<b class='flag-5'>6ULL</b>正點(diǎn)原子<b class='flag-5'>開(kāi)發(fā)</b>板LED驅(qū)動(dòng)

    I.MX6ULL終結(jié)者開(kāi)發(fā)裸機(jī)仿真jlink調(diào)試

    I.MX6ULL‘終結(jié)者’開(kāi)發(fā)板預(yù)留了JTAG仿真接口,并給出了開(kāi)發(fā)文檔,可以實(shí)現(xiàn)在JLINK仿真器條件下的單步跟蹤、斷點(diǎn)調(diào)試等功能,使得開(kāi)發(fā)研究i
    發(fā)表于 07-07 10:56

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

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

    裸機(jī)開(kāi)發(fā)_L5_BSP工程管理LED實(shí)驗(yàn)的相關(guān)資料推薦

    裸機(jī)開(kāi)發(fā)_L5_BSP工程管理LED實(shí)驗(yàn)0. 本屆目標(biāo)1. 目錄結(jié)構(gòu)2. 硬件層電路2.1 正點(diǎn)原子 i
    發(fā)表于 12-16 07:58

    介紹UART在i.mx6ull上的開(kāi)發(fā)步驟

    的HAL庫(kù)開(kāi)發(fā)在之前文章已經(jīng)提及,本篇文章將介紹UART在i.mx6ull上的開(kāi)發(fā)步驟。由于此芯片的裸機(jī)開(kāi)發(fā)在Linux下并使用ARM-Li
    發(fā)表于 12-16 06:34

    初識(shí) i.MX6ULL 寄存器

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

    ARM裸機(jī)篇之i.MX6ULL處理器資料分享

    1、i.MX6ULL處理器啟動(dòng)過(guò)程i.MX6ULL是NXP基于ARM Cortex-A7內(nèi)核的單核處理器家族,主頻可以高900MHz。i.MX6ULL應(yīng)用處理器包含了電源管理模塊,可以
    發(fā)表于 04-14 16:42

    i.MX_6Dual_6Quad_BSP_Porting_Guid

    i.MX_6Dual6Quad_BSP_Porting_Guide
    發(fā)表于 12-29 14:30 ?46次下載

    i.MX6Solo_6DualLite_BSP_Porting_Guide

    i.MX_6Solo6DualLite_BSP_Porting_Guide
    發(fā)表于 12-29 14:34 ?37次下載

    飛凌i.MX6ULL開(kāi)發(fā)板的評(píng)測(cè),再次進(jìn)階擁有更高的性?xún)r(jià)比

    處理器MCIMX6Y2開(kāi)發(fā)設(shè)計(jì),采用先進(jìn)的ARMCortex-A7內(nèi)核,運(yùn)行速度高達(dá)800MHz。i.MX6ULL應(yīng)用處理器包括一個(gè)集成的電源管理模塊,降低了外接電源的復(fù)雜性,并簡(jiǎn)化了
    發(fā)表于 10-27 11:55 ?1465次閱讀
    飛凌<b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開(kāi)發(fā)</b>板的評(píng)測(cè),再次進(jìn)階擁有更高的性?xún)r(jià)比

    基于NXP i.MX6ULL處理器的FETMX6ULL-C核心板

    合作伙伴,飛凌不負(fù)美譽(yù),基于i.MX6ULL匠心打造的FETMX6ULL-S核心板一經(jīng)問(wèn)世便好評(píng)不斷,且已有數(shù)百家來(lái)自工業(yè)、醫(yī)療、電力、物聯(lián)網(wǎng)等行業(yè)的用戶(hù)采用此款核心板快速完成了整機(jī)產(chǎn)品的開(kāi)發(fā)上市。
    發(fā)表于 04-11 15:05 ?1139次閱讀
    基于NXP <b class='flag-5'>i.MX6ULL</b>處理器的FETMX<b class='flag-5'>6ULL</b>-C核心板

    i.MX6ULL開(kāi)發(fā)板源碼編譯

    開(kāi)發(fā)板是武漢芯路遙科技有限公司與武漢萬(wàn)象奧科電子有限公司合作推出的一款開(kāi)發(fā)板。此開(kāi)發(fā)板基于 NXP iMX6ULL 系列 Cortex-A7 高性能處理器設(shè)計(jì),適用于
    的頭像 發(fā)表于 12-16 15:56 ?801次閱讀
    <b class='flag-5'>i.MX6ULL</b><b class='flag-5'>開(kāi)發(fā)</b>板源碼編譯

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

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

    IMX6ULL開(kāi)發(fā)

    i. MX6ULL 開(kāi)發(fā)板板載資源豐富,核心板通過(guò)郵票孔將 i.MX6ULL 的所有資源幾乎全部引出,接口豐富,可以滿足各種應(yīng)用的需求。核心板的尺寸僅為 42mm*38mm,非常小巧。
    發(fā)表于 11-12 15:41 ?26次下載