历史上的今天
返回首页

历史上的今天

今天是:2024年12月29日(星期日)

2020年12月29日 | I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之LCD移植

2020-12-29 来源:eefocus

经过前面的移植,eMMC已经可以在tqimx6q上正常运行了,本文将来移植LCD驱动。


DTS编写


imx6的LCD控制器与之前的芯片略有不同,详细的信息可以阅读芯片手册。参考sabrelite开发板的DTS,我们可以添加如下内容:


/ {

...

 

aliases {

mxcfb0 = &mxcfb1;

};

 

...

regulators {

...

 

reg_mipi_dsi_pwr_on: mipi_dsi_pwr_on {

compatible = "regulator-fixed";

regulator-name = "mipi_dsi_pwr_on";

gpio = <&gpio6 14 0>;

enable-active-high;

}; 

};

...

backlight {

compatible = "pwm-backlight";

pwms = <&pwm1 0 5000000>;

brightness-levels = <0 4 8 16 32 64 128 255>;

default-brightness-level = <7>;

};

 

mipi_dsi_reset: mipi-dsi-reset {

compatible = "gpio-reset";

reset-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;

reset-delay-us = <50>;

#reset-cells = <0>;

};

 

mxcfb1: fb@0 {

compatible = "fsl,mxc_sdc_fb";

disp_dev = "lcd";

interface_pix_fmt = "RGB24";

mode_str ="CLAA-WVGA";

default_bpp = <24>;

int_clk = <0>;

late_init = <0>;

status = "okay";

};

};

 

...

 

&mipi_dsi {

dev_id = <0>;

disp_id = <1>;

lcd_panel = "TRULY-WVGA";

disp-power-on-supply = <®_mipi_dsi_pwr_on>;

resets = <&mipi_dsi_reset>;

status = "okay";

};

 

...

添加以上内容后重新编译并烧写DTB。


测试方法


用新的DTB启动内核会发现屏幕上出现了四只可爱的小企鹅,我这里就不发图片了,只附上完整的内核启动Log,详细如下:


U-Boot 2013.04-04987-g98fdbdc-dirty (May 03 2015 - 11:46:24)

 

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz

CPU:   Temperature 23 C, calibration data: 0x54e4bb69

Reset cause: POR

Board: MX6Q/SDL-SabreSD

I2C:   ready

DRAM:  1 GiB

MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2

No panel detected: default to Hannstar-XGA

Display: Hannstar-XGA (1024x768)

In:    serial

Out:   serial

Err:   serial

mmc0 is current device

Net:   Phy not found

PHY reset timed out

FEC [PRIME]

Warning: failed to set MAC address

 

Normal Boot

Hit any key to stop autoboot:  0 

mmc0 is current device

 

MMC read: dev # 0, block # 2048, count 12288 ... 12288 blocks read: OK

 

MMC read: dev # 0, block # 20480, count 2048 ... 2048 blocks read: OK

## Booting kernel from Legacy Image at 11ffffc0 ...

   Image Name:   Linux-3.10.17-80739-g33597e3-dir

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    5289360 Bytes = 5 MiB

   Load Address: 12000000

   Entry Point:  12000000

   Verifying Checksum ... OK

## Flattened Device Tree blob at 18000000

   Booting using the fdt blob at 0x18000000

   XIP Kernel Image ... OK

OK

   Using Device Tree in place at 18000000, end 1800cb83

 

Starting kernel ...

 

Booting Linux on physical CPU 0x0

Linux version 3.10.17-80739-g33597e3-dirty (lilianrong@lenovo) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #3 SMP PREEMPT Wed May 13 00:16:49 CST 2015

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d

CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Freescale i.MX6 Quad TQIMX6Q Smart Device Board

cma: CMA: reserved 320 MiB at 3c000000

Memory policy: ECC disabled, Data cache writealloc

PERCPU: Embedded 8 pages/cpu @814fa000 s8896 r8192 d15680 u32768

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096

Kernel command line: noinitrd console=ttymxc0,115200 root=/dev/mmcblk0p1 rw rootfstype=ext4 init=/linuxrc

PID hash table entries: 4096 (order: 2, 16384 bytes)

Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)

Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)

Memory: 1024MB = 1024MB total

Memory: 697788k/697788k available, 350788k reserved, 0K highmem

Virtual kernel memory layout:

    vector  : 0xffff0000 - 0xffff1000   (   4 kB)

    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

    vmalloc : 0xc0800000 - 0xff000000   (1000 MB)

    lowmem  : 0x80000000 - 0xc0000000   (1024 MB)

    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)

    modules : 0x7f000000 - 0x7fe00000   (  14 MB)

      .text : 0x80008000 - 0x80be704c   (12157 kB)

      .init : 0x80be8000 - 0x80c2a2c0   ( 265 kB)

      .data : 0x80c2c000 - 0x80c7c260   ( 321 kB)

       .bss : 0x80c7c260 - 0x80ce5434   ( 421 kB)

SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1

Preemptible hierarchical RCU implementation.

NR_IRQS:16 nr_irqs:16 16

L310 cache controller enabled

l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32070000, Cache size: 1048576 B

sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms

CPU identified as i.MX6Q, silicon rev 1.2

Console: colour dummy device 80x30

Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)

pid_max: default: 32768 minimum: 301

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

CPU0: thread -1, cpu 0, socket 0, mpidr 80000000

Setting up static identity map for 0x806106a8 - 0x80610700

CPU1: Booted secondary processor

CPU1: thread -1, cpu 1, socket 0, mpidr 80000001

CPU2: Booted secondary processor

CPU2: thread -1, cpu 2, socket 0, mpidr 80000002

CPU3: Booted secondary processor

CPU3: thread -1, cpu 3, socket 0, mpidr 80000003

Brought up 4 CPUs

SMP: Total of 4 processors activated (6324.22 BogoMIPS).

CPU: All CPU(s) started in SVC mode.

devtmpfs: initialized

pinctrl core: initialized pinctrl subsystem

regulator-dummy: no parameters

NET: Registered protocol family 16

DMA: preallocated 256 KiB pool for atomic coherent allocations

Use WDOG1 as reset source

syscon 20c8000.anatop: regmap [mem 0x020c8000-0x020c8fff] registered

vdd1p1: 800 <--> 1375 mV at 1125 mV 

vdd3p0: 2800 <--> 3150 mV at 3000 mV 

vdd2p5: 2000 <--> 2750 mV at 2425 mV 

cpu: 725 <--> 1450 mV at 1150 mV 

vddpu: 725 <--> 1450 mV 

vddsoc: 725 <--> 1450 mV at 1200 mV 

syscon 20e0000.iomuxc-gpr: regmap [mem 0x020e0000-0x020e0037] registered

syscon 21bc000.ocotp-ctrl: regmap [mem 0x021bc000-0x021bffff] registered

hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.

hw-breakpoint: maximum watchpoint size is 4 bytes.

imx6q-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver

bio: create slab at 0

mxs-dma 110000.dma-apbh: initialized

usb_otg_vbus: 5000 mV 

mipi_dsi_pwr_on: no parameters

i2c-core: driver [max17135] using legacy suspend method

i2c-core: driver [max17135] using legacy resume method

SCSI subsystem initialized

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

Linux video capture interface: v2.00

pps_core: LinuxPPS API ver. 1 registered

pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti

PTP clock support registered

imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)

imx-ipuv3 2800000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)

MIPI CSI2 driver module loaded

Advanced Linux Sound Architecture Driver Initialized.

cfg80211: Calling CRDA to update world regulatory domain

Switching to clocksource mxc_timer1

NET: Registered protocol family 2

TCP established hash table entries: 8192 (order: 4, 65536 bytes)

TCP bind hash table entries: 8192 (order: 4, 65536 bytes)

TCP: Hash tables configured (established 8192 bind 8192)

TCP: reno registered

UDP hash table entries: 512 (order: 2, 16384 bytes)

UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)

NET: Registered protocol family 1

RPC: Registered named UNIX socket transport module.

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

RPC: Registered tcp NFSv4.1 backchannel transport module.

hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available

pureg-dummy: no parameters

imx6_busfreq busfreq.15: DDR medium rate not supported.

Bus freq driver module loaded

VFS: Disk quotas dquot_6.5.2

Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

NFS: Registering the id_resolver key type

Key type id_resolver registered

Key type id_legacy registered

jffs2: version 2.2. (NAND) 漏 2001-2006 Red Hat, Inc.

fuse init (API version 7.22)

msgmni has been set to 2002

io scheduler noop registered

io scheduler deadline registered

io scheduler cfq registered (default)

imx-weim 21b8000.weim: WEIM driver registered.

mxc_mipi_dsi 21e0000.mipi: i.MX MIPI DSI driver probed

MIPI DSI driver module loaded

mxc_sdc_fb fb.23: register mxc display driver lcd

Console: switching to colour frame buffer device 100x30

imx-sdma 20ec000.sdma: no iram assigned, using external mem

imx-sdma 20ec000.sdma: loaded firmware 1.1

imx-sdma 20ec000.sdma: initialized

Serial: IMX driver

2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX

console [ttymxc0] enabled

21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX

21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX

21f0000.serial: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX

21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 62) is a IMX

serial: Freescale lpuart driver

[drm] Initialized drm 1.1.0 20060810

[drm] Initialized vivante 1.0.0 20120216 on minor 0

brd: module loaded

loop: module loaded

CAN device driver interface

flexcan 2090000.can: device registered (reg_base=c0a28000, irq=142)

fec 2188000.ethernet (unregistered net_device): Invalid MAC address: 00:00:00:00:00:00

fec 2188000.ethernet (unregistered net_device): Using random MAC address: 3a:bb:80:a1:c6:b2

libphy: fec_enet_mii_bus: probed

fec 2188000.ethernet eth0: registered PHC device 0

ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver

usbcore: registered new interface driver usb-storage

ci_hdrc ci_hdrc.1: doesn't support gadget

ci_hdrc ci_hdrc.1: EHCI Host Controller

ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1

推荐阅读

史海拾趣

Hengstler GmbH公司的发展小趣事

Helium Systems Inc.公司发展的五个故事

故事一:从物联网初创到区块链转型

Helium Systems Inc.的故事始于2013年,由Napster的联合创始人Shawn Fanning和知名游戏设计师Amir Haleem等人共同创立。最初,公司名为Skynet Phase 1,灵感来源于《终结者》系列电影中的电脑系统,旨在为物联网(IoT)创建无线网络。然而,在经历了几年的产品开发和市场探索后,该项目并未取得显著成功。直到2017年,Helium团队意识到区块链技术的潜力,决定将项目转型为基于区块链的分布式无线网络项目,即后来的Helium Network。这一转型为Helium带来了全新的发展机遇。

故事二:Helium Network的迅速崛起

自2019年Helium Network正式启动以来,该项目迅速吸引了全球用户的关注。用户只需购买并部署Helium热点设备,即可为周围的物联网设备提供无线连接,并因此获得Helium的加密货币HNT作为奖励。这种创新的挖矿模式迅速吸引了大量用户参与,Helium网络在短时间内实现了全球范围内的快速扩张。到2021年,Helium网络已经覆盖了超过160个国家和地区,拥有数十万个热点,成为全球领先的分布式无线网络之一。

故事三:融资与合作伙伴的加入

Helium Systems Inc.在发展过程中获得了多轮融资支持,其中包括来自a16z和Tiger Global等知名投资机构的巨额投资。这些资金为Helium网络的进一步扩展和技术创新提供了有力保障。同时,Helium还积极寻求与全球范围内的合作伙伴建立战略合作关系,包括电信运营商、物联网设备制造商等。这些合作伙伴的加入不仅丰富了Helium网络的应用场景,还进一步提升了其市场影响力和竞争力。

故事四:技术挑战与解决方案

在Helium网络的发展过程中,团队也面临了诸多技术挑战。例如,如何确保网络的稳定性和安全性、如何优化热点设备的部署和性能等。针对这些问题,Helium团队不断进行技术创新和优化,推出了多项新技术和解决方案。例如,他们开发了独特的PoC(Proof of Coverage)共识机制,通过该机制可以确保热点设备在提供有效覆盖时才能获得奖励,从而有效防止了作弊行为的发生。此外,Helium还加强了与区块链安全公司的合作,共同提升网络的安全性。

故事五:公司更名与未来发展

为了更好地推动Helium网络的发展,Helium Systems Inc.在2022年宣布将公司更名为Nova Labs,并启用新的品牌形象。这一更名举措旨在进一步凸显Helium网络作为分布式无线网络联盟的地位和影响力。同时,Nova Labs还宣布完成了D轮融资,并计划将资金用于进一步扩展网络覆盖范围、提升技术性能和加强市场推广等方面。展望未来,Nova Labs将继续致力于推动Helium网络的发展和创新,为全球用户提供更加安全、高效、便捷的物联网连接服务。

Hitachi Metals公司的发展小趣事

在全球经济一体化的大背景下,Hitachi Metals积极应对各种挑战,通过战略并购不断壮大自身实力。近年来,公司先后并购了多家在电子材料、自动化零件等领域具有领先地位的企业,如Waupaca公司、SH cooper铜业等。这些并购不仅拓宽了日立金属的产品线,还增强了其在全球市场的竞争力。通过整合并购企业的资源和优势,Hitachi Metals在电子行业的地位进一步巩固和提升。

康奈特(CNNT)公司的发展小趣事

随着电子行业的快速发展,康奈特意识到单一的镜片业务已经无法满足市场需求。于是,公司开始积极布局多元化战略,通过收购和合作的方式,拓展了眼镜框、眼镜配件等相关业务。同时,公司还加大了对智能眼镜、VR/AR眼镜等新兴领域的研发投入,为未来的市场竞争打下了坚实基础。

ELPIDA公司的发展小趣事

2008年全球金融危机的爆发对ELPIDA造成了巨大冲击。由于DRAM需求的急剧下降和价格的暴跌,公司的业绩急剧恶化。在这种情况下,ELPIDA不得不采取一系列措施来应对困境,包括削减成本、优化生产流程等。然而,这些措施并未能完全扭转公司的颓势。

Ava Electronics Corp公司的发展小趣事

随着产品线的不断丰富和技术的不断进步,AVA电子开始将目光投向更广阔的市场。公司积极参加各类行业展会和论坛,与国内外客户建立了广泛的联系。同时,AVA电子还加大了品牌建设的力度,通过广告宣传、品牌推广等方式提高了品牌的知名度和美誉度。这些举措不仅有效提升了公司的市场份额,也为公司的长远发展奠定了坚实的基础。

Honeywell公司的发展小趣事

背景:进入20世纪后,霍尼韦尔在恒温器领域的技术不断成熟,同时,另一家名为霍尼韦尔供暖专业公司的企业也在加热器领域取得了显著成就。

发展:1927年,明尼阿波利斯热调节器公司与霍尼韦尔供暖专业公司合并,创立了明尼阿波利斯-霍尼韦尔调节器公司。这次合并不仅增强了公司的技术实力,还拓展了业务范围,使公司成为当时最大的高品质珠宝钟表生产商(尽管这与电子行业的直接关联较小,但反映了公司扩张的雄心)。

关键事件:合并后,公司继续深耕工业自动化领域,并收购了布朗仪器公司,进一步巩固了在全球工业控制器和指示器市场的领导地位。

问答坊 | AI 解惑

单片机红外通讯(遥控)电路

本文介绍的电路,原是在分时电度表中,用于校时和抄表的实际电路。它既简单又实用。利用单片机异步通讯口,用红外光发射管SIR-563和红外光接收IC管RPM6938来实现接受和发送点信号的功能,可以实现半双工双向通讯功能。通讯距离约10米,异步通讯波特 ...…

查看全部问答>

单片机及应用,东南大学(视频教程,32讲)

http://www.714e.com/bbs/display.asp?UserID=33275…

查看全部问答>

一个DSP高手的成长之路

我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生 的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还 ...…

查看全部问答>

如何快速掌握Luminary单片机?(入门必读)

虽然有周立功宣传的成分,但也不失为一个学习的路径,学习过程仅供参考。 1. 要对ARM Cortex-M3处理器内核有所了解   下载《ARM 白皮书-ARM Cortex-M3 处理器简介》一文,通读2~3遍。读完之后,我相信您已经可以体会到Cortex-M3处理器的巨 ...…

查看全部问答>

使用USB ActiveSync 需要增加组件或修改什么吗?

这两天想使用同步的方式去测试CE的程式 目前使用COM的同步方式可行! 但使用usb却不知道位何没法同步! 先说说我COM的作法! 1.当然先安装ActiveSync 4.5 2.勾选ActiveSync 及 Network User Interface 组件 3.在CE中,Make New Connections ->D ...…

查看全部问答>

请问有没有能显示pdf的控件

请问有没有能显示pdf的控件…

查看全部问答>

关于双字节

关于双字节 定义了以下两个变量,*pANSI1 ,pANSI2值得为\"姓名:李华柳;职位:员工;部门:终端研发部;公司:ert;\" 现在我想把最后一个字符\";\"变成\".\"  对于pANSI1 应该怎么做?对于pANSI2又应该怎么做?因为是双字节的,不能用ANSI1 [ ...…

查看全部问答>

关于字符串指针的初始化

如果要初始化一个字符串有两种写法: 1:char *p = \"hello\"; 2:char *p; p = \"hello\"; 这两种写法有没有错的,是否有区别。 谭浩强c程序设计p238说是一样的,大家讨论一下吧 …

查看全部问答>

寻求嵌入式开发人才,急!

最新职位发布: 1、上海: JAVA/C/.NET/COBLE/VB/嵌入式开发主管;初高级TESTING,以及白盒/自动化/本地化测试/QA 2、广州:JAVA/C/C++/.NET/QA/TECHNICAL SUPPORT/数据仓库开发 3、北京:JAVA/C/C++/.NET/QA/SA/PM(JAVA)/PM(TEST)/银行 ...…

查看全部问答>

sd卡写保护

                                 那位大哥帮帮忙,我用万利199板,想通过usb给sd卡写指令时,为pc返回一写保护,应怎样作.谢谢…

查看全部问答>