I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动。

DTS编写

由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容:

/ {

	...

	regulators {

		...

		reg_3p3v: 3p3v {
			compatible = "regulator-fixed";
			regulator-name = "3P3V";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};
	};

	...

	sound {
		compatible = "fsl,imx-audio-sgtl5000";
		model = "imx6q-sgtl5000";
		ssi-controller = <&ssi1>;
		audio-codec = <&codec>;
		audio-routing =
			"MIC_IN", "Mic Jack",
			"Mic Jack", "Mic Bias",
			"Headphone Jack", "HP_OUT";
		mux-int-port = <1>;
		mux-ext-port = <3>;
	};
};

...

&i2c2 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2_2>;
	status = "okay";

	codec: [email protected] {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		clocks = <&clks 201>;
		VDDA-supply = <&reg_3p3v>;
		VDDIO-supply = <&reg_3p3v>;
		VDDD-supply = <&reg_1p2v>;
	};
};

&ssi1 {
	fsl,mode = "i2s-slave";
	status = "okay";
};

&audmux {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_audmux_2>;
	status = "okay";
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog>;

	...

	hog {
		pinctrl_hog: hoggrp-1 {
			fsl,pins = <
				MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x80000000
			>;
		};
	};
};

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

测试方法

测试方法当然还是使用alsa-lib和alsa-utils。相关工具的移植方法如下:

Step1. 获取并交叉编译alsa-lib:

wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.29.tar.bz2
tar jxf alsa-lib-1.0.29.tar.bz2
cd alsa-lib-1.0.29
/configure --host=arm-linux-gnueabi --prefix=/mnt/usr/lib/alsa-lib
make
sudo make install

Step2. 获取并交叉编译alsa-utils:

wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.29.tar.bz2
tar jxf alsa-utils-1.0.29.tar.bz2
cd alsa-utils-1.0.29
./configure --host=arm-linux-gnueabi --prefix=/usr/share/arm-alsa --with-alsa-inc-prefix=/usr/share/arm-alsa/include --with-alsa-prefix=/usr/share/arm-alsa/lib --disable-alsamixer --disable-xmlto
make
sudo make install

Step3. 检测交叉编译是否成功:

file aplay

如果显示内容大致如下:

aplay: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=280644397dc85eaf1f1dc26b03be754ac4777cff, not stripped

则表示交叉编译成功,关键词是ARM。

Step4. 将交叉编译好的alsa拷贝到根文件系统:

sudo cp /usr/share/arm-alsa/ /mnt/usr/share/ -rfa
sudo cp /usr/share/arm-alsa/* /mnt/ -rfa
sync

接下来就可以用新的跟文件系统启动开发板了。

Step5. 测试录音:

arecord -f dat test.wav

执行以上指令后对着开发板说话,说完之后通过ctrl+C键中断录音。

Step5. 播放录音:

aplay test.wav

如果按照以上步骤正确的进行了移植,就可以听到录音时自己说的话了。

启动Log

完整的启动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 26 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 1800d14d

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 3.10.17-80739-g33597e3-dirty ([email protected]) (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: 697784k/697784k available, 350792k 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 <bio-0> at 0
mxs-dma 110000.dma-apbh: initialized
usb_otg_vbus: 5000 mV
mipi_dsi_pwr_on: no parameters
3P3V: 3300 mV
1P2V: 1200 mV
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
i2c i2c-0: IMX I2C adapter registered
i2c i2c-1: IMX I2C adapter registered
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 <[email protected]>
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.26: 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=c0a38000, 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: c2:9c:30:14:aa:25
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
ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
mousedev: PS/2 mouse device common for all mice
i2c-core: driver [isl29023] using legacy suspend method
i2c-core: driver [isl29023] using legacy resume method
snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0
i2c /dev entries driver
i2c-core: driver [mag3110] using legacy suspend method
i2c-core: driver [mag3110] using legacy resume method
imx2-wdt 20bc000.wdog: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=0)
cpuidle: using governor ladder
cpuidle: using governor menu
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
mmc0: no vqmmc regulator found
mmc0: no vmmc regulator found
mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
mmc1: no vqmmc regulator found
mmc1: no vmmc regulator found
mmc1: SDHCI controller on 219c000.usdhc [219c000.usdhc] using ADMA
mmc0: new high speed SDHC card at address e624
mmcblk0: mmc0:e624 SS08G 7.40 GiB
 mmcblk0: p1
mmc1: BKOPS_EN bit is not set
usb 1-1: new high-speed USB device number 2 using ci_hdrc
mmc1: new high speed DDR MMC card at address 0001
mmcblk1: mmc1:0001 008G92 7.28 GiB
mmcblk1boot0: mmc1:0001 008G92 partition 1 4.00 MiB
mmcblk1boot1: mmc1:0001 008G92 partition 2 4.00 MiB
mmcblk1rpmb: mmc1:0001 008G92 partition 3 512 KiB
 mmcblk1: p1
 mmcblk1boot1: unknown partition table
 mmcblk1boot0: unknown partition table
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
Galcore version 4.6.9.9754
mxc_vdoa 21e4000.vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
mxc_asrc 2034000.asrc: mxc_asrc registered
mxc_vpu 2040000.vpu: VPU initialized
leds-gpio gpio-leds.22: pins are not configured from the driver
caam 2100000.caam: device ID = 0x0a16010000000000 (Era -524)
caam 2100000.caam: job rings = 2, qi = 0
caam 2100000.caam: authenc-hmac-md5-cbc-aes-caam
caam 2100000.caam: authencesn-hmac-md5-cbc-aes-caam
caam 2100000.caam: authenc-hmac-sha1-cbc-aes-caam
caam 2100000.caam: authencesn-hmac-sha1-cbc-aes-caam
caam 2100000.caam: authenc-hmac-sha224-cbc-aes-caam
caam 2100000.caam: authencesn-hmac-sha224-cbc-aes-caam
caam 2100000.caam: authenc-hmac-sha256-cbc-aes-caam
caam 2100000.caam: authencesn-hmac-sha256-cbc-aes-caam
caam 2100000.caam: authenc-hmac-md5-cbc-des3_ede-caam
caam 2100000.caam: authencesn-hmac-md5-cbc-des3_ede-caam
caam 2100000.caam: authenc-hmac-sha1-cbc-des3_ede-caam
caam 2100000.caam: authencesn-hmac-sha1-cbc-des3_ede-caam
caam 2100000.caam: authenc-hmac-sha224-cbc-des3_ede-caam
caam 2100000.caam: authencesn-hmac-sha224-cbc-des3_ede-caam
caam 2100000.caam: authenc-hmac-sha256-cbc-des3_ede-caam
caam 2100000.caam: authencesn-hmac-sha256-cbc-des3_ede-caam
caam 2100000.caam: authenc-hmac-md5-cbc-des-caam
caam 2100000.caam: authencesn-hmac-md5-cbc-des-caam
caam 2100000.caam: authenc-hmac-sha1-cbc-des-caam
caam 2100000.caam: authencesn-hmac-sha1-cbc-des-caam
caam 2100000.caam: authenc-hmac-sha224-cbc-des-caam
caam 2100000.caam: authencesn-hmac-sha224-cbc-des-caam
caam 2100000.caam: authenc-hmac-sha256-cbc-des-caam
caam 2100000.caam: authencesn-hmac-sha256-cbc-des-caam
caam 2100000.caam: ecb-des-caam
caam 2100000.caam: ecb-arc4-caam
caam 2100000.caam: ecb-aes-caam
caam 2100000.caam: ctr-aes-caam
caam 2100000.caam: cbc-aes-caam
caam 2100000.caam: ecb-des3-caam
caam 2100000.caam: cbc-3des-caam
caam 2100000.caam: cbc-des-caam
caam 2100000.caam: fsl,sec-v4.0 algorithms registered in /proc/crypto
platform 2101000.jr0: registering rng-caam
platform caam_sm: caam_sm_test: 8-byte key test match OK
platform caam_sm: caam_sm_test: 16-byte key test match OK
platform caam_sm: caam_sm_test: 32-byte key test match OK
platform caam_secvio.28: security violation service handlers armed
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
i2c-core: driver [cs42888] using legacy suspend method
i2c-core: driver [cs42888] using legacy resume method
sgtl5000 1-000a: sgtl5000 revision 0x11
1-000a: 1200 mV normal
sgtl5000 1-000a: Using internal LDO instead of VDDD
imx-sgtl5000 sound.27:  sgtl5000 <-> 2028000.ssi mapping ok
TCP: cubic registered
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
can: controller area network core (rev 20120528 abi 9)
NET: Registered protocol family 29
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
8021q: 802.1Q VLAN Support v1.8
Key type dns_resolver registered
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
input: gpio-keys.21 as /devices/soc0/gpio-keys.21/input/input0
snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 1970-01-01 00:00:00 UTC (0)
ALSA device list:
  #0: imx6q-sgtl5000
EXT4-fs (mmcblk0p1): recovery complete
EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:1.
devtmpfs: mounted
Freeing unused kernel memory: 264K (80be8000 - 80c2a000)
----------mount all..........
----------Starting mdev......

Please press Enter to activate this console.
@tqimx6q #

至此,就完成了tqimx6q的声卡驱动移植,有任何疑问欢迎留言讨论。

本文作者:girlkoo

本文链接:http://blog.csdn.net/girlkoo/article/details/45853165

时间: 2024-10-16 03:04:20

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植的相关文章

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之触摸屏驱动移植

之所以说是驱动移植是因为之前已经在TQ210.AM335x两个平台上移植过了,因此,仅需要少量修改就可以将驱动移植到imx6q.下面开始触摸驱动移植. DTS编写 参考其它DTS的i2c设备写法,我们可以添加如下内容: &i2c1 { clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1_2>; status = "okay&q

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之网卡驱动移植

由于对网卡这块不是很熟悉,误以为网卡驱动也可以简单的配置下DTS就可以正常工作了,实际移植中遇到了些问题.闲话少说,下面开始tqimx6q的网卡驱动移植. DTS编写 首先在我们的DTS中添加网卡配置,参考sabrelite的DTS,我们可以如下编写: &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet_1>; phy-mode = "rgmii"; status =

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之USB HOST移植

USB HOST驱动一般都是由芯片厂商维护的,因此,我们仍然只需要配置下DTS即可完成USB HOST驱动的移植. DTS配置 参考sabresd相关的DTS,在我们的DTS中添加如下内容: / { ... regulators { compatible = "simple-bus"; reg_usb_otg_vbus: usb_otg_vbus { compatible = "regulator-fixed"; regulator-name = "usb

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载

经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统. DTB整理 前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的BSP上我发现即便有根文件系统,内核也会挂掉,由于原来的DTS文件中配置内容太多,不好确定问题的源头,本文对DTS进行了整理,整理后只需要一个DTS文件,其内容如下: /* * Copyright 2012 Freescale Semiconductor, Inc. * Copyright 2011

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之kernel移植

前篇文章已经在tqimx6q上成功跑起了新版BSP的uboot,本文来配置下新版BSP的kernel,使kernel能在tqimx6q上正常启动. 准备工作 每次移植kernel的时候都会做的工作就是找到与当前开发板接近的config,其实uboot移植的时候也是一样的.由于tqimx6q的芯片是imx6q的,所以,还是以mx6q_sabresd为例.另外,自己动手移植BSP时应该充分使用官方文档,本人以为,以下文档是非常有用的: (1) i.MX 6 BSP Porting Guide: 该文

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之KEY、LED

经过前面的移植,内核已经可以在tqimx6q上正常挂载根文件系统了,接下来开始移植各类设备驱动,本文先来移植按键和LED.之所以从按键和LED开始是因为这两种设备的驱动是最简单的. 按键驱动移植 查看tqimx6q的原理图可知,这块开发板有5个按键,其中,除了reset键之外还有个电源键,这个电源键与其它键有些不同,因此,本文移植剩余的这三个键(电源键在移植电源管理模块时处理).通过阅读原理图可知,K1.K2.K3分别连接到了GPIO1_28.GPIO4_5和GPIO1_30上,基于内核的gpi

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之u-boot移植

前段时间就开始学习I.MX6Q了,但是最近工作实在是忙,间断了一些时间了.为了提高移植效率,还是考虑移植Freescale维护的3.10版本的内核. 源码获取 Freescale维护的3.10的内核是使用git管理的,但是直接使用git下载代码会比较慢,下面是我下载好的uboot和kernel: I.MX6Q BSP源码(Freescale官方维护) 代码下载好后,先将u-boot解压到工作目录,然后在终端下切换到uboot根目录.由于这个版本的bsp是使用git管理的,因此,需要切换到指定分支

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之LCD移植

经过前面的移植,eMMC已经可以在tqimx6q上正常运行了,本文将来移植LCD驱动. DTS编写 imx6的LCD控制器与之前的芯片略有不同,详细的信息可以阅读芯片手册.参考sabrelite开发板的DTS,我们可以添加如下内容: / { ... aliases { mxcfb0 = &mxcfb1; }; ... regulators { ... reg_mipi_dsi_pwr_on: mipi_dsi_pwr_on { compatible = "regulator-fixed&

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之CAN移植

经过前面的移植,tqimx6q已经完美支持网卡,现在,我们来移植CAN.其实这里所谓的移植,仅仅是配置DTS,使内核能够检测到CAN设备,CAN驱动本身是freescale维护的.下面开始CAN的移植. DTS编写 参考imx6q其它的DTS编写方式,我们可以如下编写DTS文件: ... &flexcan1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_flexcan1_3>; status = &qu