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

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

3天內不再提示

【i.MX6ULL】驅動開發(fā)11——LCD驅動實踐

碼農愛學習 ? 來源:碼農愛學習 ? 作者:碼農愛學習 ? 2022-05-30 09:31 ? 次閱讀

之前在Linux系統(tǒng)移植時提到過LCD驅動,本篇來看下Linux設備樹如何配置LCD驅動。

1 知識點

首先需要了解一個新的概念:Framebuffer

1.1 Framebuffer

Framebuffer直譯即幀緩沖,簡稱 fb,它是Linux將系統(tǒng)中所有跟顯示有關的硬件以及軟件集合起來,將底層的LCD虛擬抽象出一 個/dev/fbX設備,應用程序可以通過操作/dev/fbX來實現(xiàn)對屏幕的顯示控制。

NXP官方Linux內核已默認開啟了LCD驅動,在dev/目錄下可以看到fb0這樣一個設備

pYYBAGKQ6duARppzAAAJ7SLnI7I166.png

Framebuffer在內核中的表現(xiàn)就是fb_info結構體:

poYBAGKQ6eGAQSaHAAJWxNFTspQ039.png

完整的結構體定義如下:

struct fb_info {
	atomic_t count;
	int node;
	int flags;
	struct mutex lock;		/* Lock for open/release/ioctl funcs */
	struct mutex mm_lock;		/* Lock for fb_mmap and smem_* fields */
	struct fb_var_screeninfo var;	/* 當前的可變參數(shù) */
	struct fb_fix_screeninfo fix;	/* 當前的固定參數(shù) */
	struct fb_monspecs monspecs;	/* Current Monitor specs */
	struct work_struct queue;	/* Framebuffer event queue */
	struct fb_pixmap pixmap;	/* Image hardware mapper */
	struct fb_pixmap sprite;	/* Cursor hardware mapper */
	struct fb_cmap cmap;		/* Current cmap */
	struct list_head modelist;      /* mode list */
	struct fb_videomode *mode;	/* current mode */

#ifdef CONFIG_FB_BACKLIGHT
	/* assigned backlight device */
	/* set before framebuffer registration, 
	   remove after unregister */
	struct backlight_device *bl_dev;

	/* Backlight level curve */
	struct mutex bl_curve_mutex;	
	u8 bl_curve[FB_BACKLIGHT_LEVELS];
#endif
#ifdef CONFIG_FB_DEFERRED_IO
	struct delayed_work deferred_work;
	struct fb_deferred_io *fbdefio;
#endif

	struct fb_ops *fbops;       /* 幀緩沖操作函數(shù)集 */
	struct device *device;		/* This is the parent */
	struct device *dev;		    /* This is this fb device */
	int class_flag;             /* private sysfs flags */
#ifdef CONFIG_FB_TILEBLITTING
	struct fb_tile_ops *tileops;    /* Tile Blitting */
#endif
	char __iomem *screen_base;	    /* 虛擬內存基地址(屏幕顯存) */
	unsigned long screen_size;	    /* 虛擬內存大小(屏幕顯存大小) */ 
	void *pseudo_palette;		    /* 偽16位調色板 */ 
#define FBINFO_STATE_RUNNING	0
#define FBINFO_STATE_SUSPENDED	1
	u32 state;			            /* Hardware state i.e suspend */
	void *fbcon_par;                /* fbcon use-only private area */
	/* From here on everything is device dependent */
	void *par;
	/* we need the PCI or similar aperture base/size not
	   smem_start/size as smem_start may just be an object
	   allocated inside the aperture so may not actually overlap */
	struct apertures_struct {
		unsigned int count;
		struct aperture {
			resource_size_t base;
			resource_size_t size;
		} ranges[0];
	} *apertures;

	bool skip_vt_switch; /* no VT switch on suspend/resume required */
};

注意結構體中的fb_fops這一項,/dev/fb0 是個字符設備,fb_fops就是它的文件操作結構體,它的file_operations操作集在drivers/video/fbdev/core/fbmem.c 文件中:

pYYBAGKQ6emAcHWbAAEuF4Ealiw504.png
static const struct file_operations fb_fops = {
	.owner =	THIS_MODULE,
	.read =		fb_read,
	.write =	fb_write,
	.unlocked_ioctl = fb_ioctl,
#ifdef CONFIG_COMPAT
	.compat_ioctl = fb_compat_ioctl,
#endif
	.mmap =		fb_mmap,
	.open =		fb_open,
	.release =	fb_release,
#ifdef HAVE_ARCH_FB_UNMAPPED_AREA
	.get_unmapped_area = get_fb_unmapped_area,
#endif
#ifdef CONFIG_FB_DEFERRED_IO
	.fsync =	fb_deferred_io_fsync,
#endif
	.llseek =	default_llseek,
};

可以看到有熟悉的open、release等函數(shù)接口。

因此,LCD驅動的重點就是初始化fb_info里面的各個成員。

fb_info結構體的成員變量很多,需要重點關注的是這幾個:

var:當前的可變參數(shù)

fix:當前的固定參數(shù)

fbops:幀緩沖操作函數(shù)集

screen_base:虛擬內存基地址(屏幕顯存)

screen_size:虛擬內存大小(屏幕顯存大小)

pseudo_palette:偽16位調色板

初始化完成fb_info后,通過register_framebuffer函數(shù)向內核注冊剛剛初始化的fb_info。

1.2 LCD驅動文件mxsfb介紹

LCD的驅動文件為mxsfb.c,這是一種platform驅動框架,驅動和設備匹配之后,mxsfb_probe函數(shù)就會執(zhí)行。

LCD的初始化通過mxsfb_probe函數(shù)來實現(xiàn),該函數(shù)的主要功能有:

申請fb_info

初始化fb_info結構體中的各個成員變量

初始化eLCDIF控制器

使用register_framebuffer函數(shù)向Linux內核注冊初始化好的fb_info

該函數(shù)位于:/drivers/video/fbdev/mxsfb.c中

pYYBAGKQ6feAWiotAAGEt1f1rI8451.png

該函數(shù)的實現(xiàn)如下:

static int mxsfb_probe(struct platform_device *pdev)
{
	const struct of_device_id *of_id =
			of_match_device(mxsfb_dt_ids, &pdev->dev);
	struct resource *res;
	struct mxsfb_info *host; //<-----NXP的fb_info
	struct fb_info *fb_info; //<-----Linux的fb_info
	struct pinctrl *pinctrl;
	int irq = platform_get_irq(pdev, 0);
	int gpio, ret;

	if (of_id)
		pdev->id_entry = of_id->data;

	gpio = of_get_named_gpio(pdev->dev.of_node, "enable-gpio", 0);
	if (gpio == -EPROBE_DEFER)
		return -EPROBE_DEFER;
	//省略...

	fb_info = framebuffer_alloc(sizeof(struct fb_info), &pdev->dev);//<--------申請fb_info
	if (!fb_info) {
		dev_err(&pdev->dev, "Failed to allocate fbdev\n");
		devm_kfree(&pdev->dev, host);
		return -ENOMEM;
	}
    host->fb_info = fb_info; //<---將mxsfb_info與fb_info聯(lián)系起來
    fb_info->par = host;
	//省略...

	ret = mxsfb_init_fbinfo(host);
	if (ret != 0)
		goto fb_pm_runtime_disable;

	mxsfb_dispdrv_init(pdev, fb_info);
	//省略...
    
	ret = register_framebuffer(fb_info); //<------------注冊
	if (ret != 0) {
		dev_err(&pdev->dev, "Failed to register framebuffer\n");
		goto fb_destroy;
	}

	console_lock();
	ret = fb_blank(fb_info, FB_BLANK_UNBLANK);
	console_unlock();
	if (ret < 0) {
		dev_err(&pdev->dev, "Failed to unblank framebuffer\n");
		goto fb_unregister;
	}

	dev_info(&pdev->dev, "initialized\n");
	
}

其中,register_framebuffer函數(shù)的原型如下:

poYBAGKQ6f2ATFifAACdgpuvrzM695.png

函數(shù)參數(shù)和返回值含義:

fb_info:需上報的fb_info

返回值:0-成功,負值-失敗

1.3 LCD 驅動程序編寫

6ULL的eLCDIF接口驅動程序 NXP 已經編 寫好了,因此 LCD 驅動部分我們不需要去修改。我們需要做的就是按照所使用的 LCD 來修改設備樹。

1.3.1 查看設備樹

1.3 先來看一下NXP官方編寫的Linux下的 LCD 驅動。打開 imx6ull.dtsi,然后找到 lcdif節(jié)點內容:

poYBAGKQ6geAI05xAAEPqzv9Foc558.png
lcdif: lcdif@021c8000 {
    compatible = "fsl,imx6ul-lcdif", "fsl,imx28-lcdif";
    reg = <0x021c8000 0x4000>;
    interrupts = ;
    clocks = <&clks IMX6UL_CLK_LCDIF_PIX>,
    <&clks IMX6UL_CLK_LCDIF_APB>,
    <&clks IMX6UL_CLK_DUMMY>;
    clock-names = "pix", "axi", "disp_axi";
    status = "disabled";
};

其中021c8000 這個地址,可以從參考手冊中找到對應的介紹:

pYYBAGKQ6gyAEg2EAAGbSy0uBo8326.png

1.3.2 屏幕IO配置

打開 imx6ull-myboard.dts 文件,在 iomuxc 節(jié)點中找到如下內容:

poYBAGKQ6hOAPKPJAAEUZ0GO2ow553.png

具體為:

pinctrl_lcdif_dat: lcdifdatgrp {
			fsl,pins = <
				MX6UL_PAD_LCD_DATA00__LCDIF_DATA00  0x79
				MX6UL_PAD_LCD_DATA01__LCDIF_DATA01  0x79
				MX6UL_PAD_LCD_DATA02__LCDIF_DATA02  0x79
				MX6UL_PAD_LCD_DATA03__LCDIF_DATA03  0x79
				MX6UL_PAD_LCD_DATA04__LCDIF_DATA04  0x79
				MX6UL_PAD_LCD_DATA05__LCDIF_DATA05  0x79
				MX6UL_PAD_LCD_DATA06__LCDIF_DATA06  0x79
				MX6UL_PAD_LCD_DATA07__LCDIF_DATA07  0x79
				MX6UL_PAD_LCD_DATA08__LCDIF_DATA08  0x79
				MX6UL_PAD_LCD_DATA09__LCDIF_DATA09  0x79
				MX6UL_PAD_LCD_DATA10__LCDIF_DATA10  0x79
				MX6UL_PAD_LCD_DATA11__LCDIF_DATA11  0x79
				MX6UL_PAD_LCD_DATA12__LCDIF_DATA12  0x79
				MX6UL_PAD_LCD_DATA13__LCDIF_DATA13  0x79
				MX6UL_PAD_LCD_DATA14__LCDIF_DATA14  0x79
				MX6UL_PAD_LCD_DATA15__LCDIF_DATA15  0x79
				MX6UL_PAD_LCD_DATA16__LCDIF_DATA16  0x79
				MX6UL_PAD_LCD_DATA17__LCDIF_DATA17  0x79
				MX6UL_PAD_LCD_DATA18__LCDIF_DATA18  0x79
				MX6UL_PAD_LCD_DATA19__LCDIF_DATA19  0x79
				MX6UL_PAD_LCD_DATA20__LCDIF_DATA20  0x79
				MX6UL_PAD_LCD_DATA21__LCDIF_DATA21  0x79
				MX6UL_PAD_LCD_DATA22__LCDIF_DATA22  0x79
				MX6UL_PAD_LCD_DATA23__LCDIF_DATA23  0x79
			>;
		};

		pinctrl_lcdif_ctrl: lcdifctrlgrp {
			fsl,pins = <
				MX6UL_PAD_LCD_CLK__LCDIF_CLK	    0x79
				MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE  0x79
				MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC    0x79
				MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC    0x79
			>;
		};

		pinctrl_pwm1: pwm1grp {
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO08__PWM1_OUT   0x110b0
			>;
		};

這里有3個節(jié)點:

子節(jié)點pinctrl_lcdif_dat ,為 RGB LCD 的 24根數(shù)據線配置項

子節(jié)點 pinctrl_lcdif_ctrl ,為RGB LCD 的 4根控制線配置項,包括 CLK、ENABLE、VSYNC 和 HSYNC

子節(jié)點 pinctrl_pwm1 ,為RGB LCD 的背光亮度配置項

1.3.3 屏幕參數(shù)配置

在imx6ull-myboard.dts 文件中找到lcdif 節(jié)點,根據自己使用的LCD,修改為對應的參數(shù)。

下面是NXP官方板子的參數(shù):

pYYBAGKQ6h6AVFuQAAEUaIK35xY705.png

我用的野火7寸屏(GT911,800x480),其參數(shù)為:

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

修改后的lcdif 節(jié)點如下:

&lcdif {
	pinctrl-names = "default";             /* 使用到的 IO */ 
	pinctrl-0 = <&pinctrl_lcdif_dat
		     &pinctrl_lcdif_ctrl
		     &pinctrl_lcdif_reset>;
	display = <&display0>;
	status = "okay";

	display0: display {                  /* LCD 屬性信息 */ 
		bits-per-pixel = <16>;           /* 一個像素占用幾個bit */ 
		bus-width      = <24>;           /* 總線寬度 */ 

		display-timings {
			native-mode = <&timing0>;    /* 時序信息 */ 
			timing0: timing0 {
			clock-frequency = <9200000>; /* LCD像素時鐘,單位Hz */ 
			hactive      = <800>;        /* LCD X軸像素個數(shù) */ 
			vactive      = <480>;        /* LCD Y軸像素個數(shù) */ 
			hfront-porch = <22>;         /* LCD hfp 參數(shù) */ 
			hback-porch  = <46>;         /* LCD hbp 參數(shù) */
			hsync-len    = <23>;         /* LCD hspw 參數(shù) */ 
			vback-porch  = <22>;         /* LCD vbp 參數(shù) */
			vfront-porch = <4>;          /* LCD vfp 參數(shù) */ 
			vsync-len    = <1>;          /* LCD vspw 參數(shù) */ 

			hsync-active    = <0>;       /* hsync 數(shù)據線極性 */ 
			vsync-active    = <0>;       /* vsync 數(shù)據線極性 */ 
			de-active       = <1>;       /* de 數(shù)據線極性 */ 
			pixelclk-active = <0>;       /* clk 數(shù)據線極性 */ 
			};
		};
	};
};

1.3.4 屏幕背光配置

通過PWM信號來控制LCD屏幕背光的亮度

pinctrl_pwm1: pwm1grp {
    fsl,pins = <
        MX6UL_PAD_GPIO1_IO08__PWM1_OUT   0x110b0
        >;
};

LCD 背光要用到PWM1,因此也要設置 PWM1 節(jié)點,在imx6ull.dtsi 文件中找到如下內容:

poYBAGKQ6iaAVC86AADAsjJbxCU170.png

這個節(jié)點信息不用修改,使用默認的配置即可。如果要修改的話,也不要修改這里,可以通過imx6ull-myboard.dts文件中進行修改。

imx6ull-myboard.dts中的pwm1節(jié)點:

&pwm1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm1>;
	status = "okay";
};

imx6ull-myboard.dts中的backlight節(jié)點:

backlight {
    compatible = "pwm-backlight";
    pwms = <&pwm1 0 5000000>;
    brightness-levels = <0 4 8 16 32 64 128 255>;
    default-brightness-level = <6>;
    status = "okay";
};

2 實驗測試

2.1使能Linux logo顯示

uboot啟動的時候,LCD左上角上會顯示NXP的圖標,而Linux內核啟動的時候,LCD左上角上會顯示一個小企鵝。因此,可以通過小企鵝logo的顯示來驗證LCD 驅動是否正常。

默認情況下是已經開啟logo顯示的,可以再確認一下。

在Linux內核源碼目錄,輸入以下指令打開內核的圖形化配置:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

Linux內核配置界面:

pYYBAGKQ6i-Ad5A1AADcC5xhFG8030.png

然后按下路徑找到對應的配置項:

-> Device Drivers 
      -> Graphics support    
      -> Bootup logo (LOGO [=y])

最終到達這個界面:

poYBAGKQ6jiAcojvAAC7ckOdHh8415.png

這三個選項分別對應黑白、16 位、24 位色彩格式的 logo。

2.2 編譯設備樹

修改設備樹中的lcdif節(jié)點后(主要是修改屏幕的參數(shù)),在Linux內核源碼目錄執(zhí)行下面的命令,重新編譯設備樹并拷貝到網絡啟動位置。

make imx6ull-myboard.dtb
cp arch/arm/boot/dts/imx6ull-myboard.dtb ~/myTest/tftpboot/nxp/

然后重啟開發(fā)板,就可以在Linux內核驅動的時候看到屏幕上的企鵝圖標了:

pYYBAGKQ6j-AeAT6AACfhn-7Jb8456.png

2.3 設置LCD作為終端控制臺

之前一直使用串口來顯示板子的啟動和調試信息,實際上可以設置 LCD 作為終端進行同步顯示:

2.3.1 設置uboot的bootargs

重啟開發(fā)板,在倒計時時按回充進入ubout,可以先看下之前的bootargs配置:

pYYBAGKQ6k-AdED9AACuvMeyOQE101.png

只需要在原來的基礎上再添加console=tty1即可:

setenv bootargs 'console=tty1 console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.5.104:/home/xxpcb/myTest/nfs/rootfs,proto=tcp,nfsvers=4 rw ip=192.168.5.102:192.168.5.104:192.168.5.1:255.255.255.0::eth1:off'
saveenv

然后重啟開發(fā)板,在Linux內核驅動的時候就可以在屏幕上看到輸出信息了:

pYYBAGKQ6mGAcR9rAAG6hmn4024059.png

對比一下串口輸出的信息,可以看出屏幕輸出到Freeing unused kernel memory: 400K (8090e000 - 80972000)這句后就沒有了,沒有出現(xiàn)按下回車鍵繼續(xù)的提示,也沒有顯示開啟自啟動的hello word測試程序的打印,這是因為某些設置還未完成。

poYBAGKQ6meARQ1eAACkBVaBJjI565.png

2.3.2 修改/etc/inittab文件

該修改用于設置屏幕作為終端進行交互。

打開根文件系統(tǒng)中的/etc/inittab 文件,加入下面這一行:

tty1::askfirst:-/bin/sh 
pYYBAGKQ6nKAClaJAABHGtbOVNs968.png

保存后重啟板子,并在板子的USB接口插上鍵盤,就可以通過鍵盤和板子交互了:

poYBAGKQ6neAVEBsAAEVE_63mY8980.png

現(xiàn)在通過板子插入鍵盤,也可以在屏幕上操作板子了。

注意,之前設置的開機啟動的hello word程序的打印沒有出現(xiàn)在屏幕上,是因為printf的輸入沒有設置的LCD中,我們可以通過將輸出指向 /dev/tty1 來實現(xiàn)LCD屏幕的打印,比如測試屏幕輸出hello linux:

echo hello linux > /dev/tty1 
pYYBAGKQ6oCAS-wyAALgJl3A3co509.png

2.4 其它問題

2.4.1 自動熄屏的問題

當沒有操作LCD屏幕一段時間后,屏幕會自動黑屏,這時可以通過接入鍵盤按下回車鍵進行喚醒(也可以通過板子的ON/OFF按鍵進行喚醒,因為該按鍵也被賦予了回車鍵的功能)。

這個時間是在Linux源碼的 drivers/tty/vt/vt.c中設置的,默認是10分鐘(10*60秒)。

poYBAGKQ6oiAPNkRAADiJLxxJPQ190.png

如果想讓屏幕一直亮著,可以將改值設為0,并重新編輯Linux內核得到zImage,然后用新的zImage啟動開發(fā)板。

如果不想修改zImage,另外一種方式可以創(chuàng)建一個開機啟動的應用程序來控制屏幕不熄滅, lcd_always_on.c的內容為:

#include  
#include  
#include  

int main(int argc, char *argv[]) 
{ 
    int fd; 
    fd = open("/dev/tty1", O_RDWR); 
    write(fd, "\033[9;0]", 8); 
    close(fd); 
    return 0; 
} 

在ubuntu中編譯該程序,然后將可執(zhí)行程序拷貝到板子的根文件系統(tǒng)中:

arm-linux-gnueabihf-gcc lcd_always_on.c -o lcd_always_on 
cp lcd_always_on ~/myTest/nfs/rootfs/usr/bin/
pYYBAGKQ6o-ADWgWAAJWE74TCes253.png

然后,/etc/init.d/rcS中設置該程序開機自啟動即可。

poYBAGKQ6piAKQakAABr4Doq-Mc366.png

保存后,重啟開發(fā)板,屏幕就不會自動熄屏了。

2.4.2 屏幕亮度調節(jié)

屏幕的亮度也是可以調節(jié)的,設備樹中背光節(jié)點設置了8 個等級,可以在 0~7范圍內進行亮度調節(jié),進入下面的目錄,可以查看當前屏幕的亮度:

/sys/devices/platform/backlight/backlight/backlight 

通過下面的指令可以實時修改屏幕的亮度,比如修改亮度為1:

echo 1 > brightness
pYYBAGKQ6uSAffK-AAFfbxEnsjU547.png

總結

本篇介紹了LCD屏幕驅動相關知識并進行了實驗,因為NXP官方的板子和我這個板子的LCD引腳一樣,因此主要的修改就是將設備樹中的lcdif 節(jié)點的屏幕參數(shù)進行修改即可。

通過實驗,可以將企鵝logo顯示出來,并將板子的輸出信息定向到了LCD屏幕顯示,通過接入鍵盤可實現(xiàn)與Linux板子的交互。最后,還測試了屏幕熄屏和亮度調節(jié)功能。

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

    關注

    5060

    文章

    18976

    瀏覽量

    302220
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4407

    瀏覽量

    166950
  • Linux
    +關注

    關注

    87

    文章

    11213

    瀏覽量

    208736
  • LCD驅動
    +關注

    關注

    4

    文章

    88

    瀏覽量

    26608
  • i.MX6
    +關注

    關注

    1

    文章

    37

    瀏覽量

    16272
收藏 人收藏

    評論

    相關推薦

    i.MX6ULL 驅動開發(fā)7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

    本篇主要介紹了i.MX6ULL的按鍵檢測的使用,主要的知識點是設備樹的修改,以及GPIO的輸入配置與高低電平的讀取。
    的頭像 發(fā)表于 05-24 09:11 ?6096次閱讀
    <b class='flag-5'>i.MX6ULL</b> <b class='flag-5'>驅動</b><b class='flag-5'>開發(fā)</b>7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

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

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

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

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

    移植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單獨編譯內核,uboot
    發(fā)表于 07-01 17:50

    迅為I.MX6ULL終結者開發(fā)板支持JTAG調試

    的硬件環(huán)境1、迅為-i.MX6ULL終結者開發(fā)板一塊2、JLNK V9下載器一個3、JLINK V9轉換板一個(2.54mm轉2.0mm)1.2 搭建開發(fā)環(huán)境1.2.1 安裝JLINK V9
    發(fā)表于 05-06 14:09

    I.MX6ULL終結者開發(fā)板裸機仿真jlink調試

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

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

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

    初識 i.MX6ULL 寄存器

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

    I.MX6ULL無法枚舉USB2514是為什么?

    你好目前,I.MX6ULL開發(fā)存在一些問題。其中之一是OTG USB2無法正常掛載USB2514,無法正確枚舉下游設備,只顯示設備id。usb設計要注意什么。
    發(fā)表于 04-03 06:55

    飛凌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>板的評測,再次進階擁有更高的性價比

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

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

    i.MX6ULL驅動開發(fā)4——點亮LED(寄存器版)

    本篇主要介紹了如何通過操作寄存器來點亮i.MX6ULL開發(fā)板上的led,通過編寫LED對應的驅動程序和應用程序,實現(xiàn)程序設計的分層。
    的頭像 發(fā)表于 05-21 21:26 ?2924次閱讀
    【<b class='flag-5'>i.MX6ULL</b>】<b class='flag-5'>驅動</b><b class='flag-5'>開發(fā)</b>4——點亮LED(寄存器版)

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

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

    基于i.MX6ULL的掉電檢測設計與軟件測試

    基于i.MX6ULL的掉電檢測設計與軟件測試基于i.MX6ULL平臺設計實現(xiàn)掉電檢測功能,首先選擇一路IO,利用IO電平變化觸發(fā)中斷,在編寫驅動時捕獲該路GPIO的中斷,然后在中斷響應函數(shù)中發(fā)
    的頭像 發(fā)表于 11-09 10:40 ?799次閱讀
    基于<b class='flag-5'>i.MX6ULL</b>的掉電檢測設計與軟件測試