imx6ull芯片手册(imx6ull芯片介绍)

imx6ull芯片手册(imx6ull芯片介绍)i MX6ULL 应用笔记目录 1 1 管脚复用的参数配置方法 PINMUX 1 2 Windows 下转换开机 LOGO 图片格式 1 3 8189es SDIO WIFI 使用及测试 1 4 USB 转串口芯片的支持 PL2303 1 5 增加串口 1 6 串口配置 DMA1 7 LCD 转 LVDS 模块 1 8 LCD 转 VGA 模块 1 9 硬浮点运算 1 10 OTG 修改模式 1 11

大家好,我是讯享网,很高兴认识大家。



正文开始

1. EC20 4G模块拨号成功并分配IP,可连接外网。设置转发规则:

root@freescale /\( https://www.bilibili.com/read/cv/quectel-CM &amp; /*拨号,如果文件系统中无此应用程序,请参考应用笔记中源码,交叉编译之后,拷贝到文件系统中*/ echo 1 &gt; /proc/sys/net/ipv4/ip_forward /* 打开 IP 转发 */ iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE /*eth2为4G 模块识别出的网卡,设置转发规则 */</p><p><br></p><p>2.设置WiFi的模式与IP确保模块8723bu已经加载。</p><p><br></p><p>ifconfig wlan0 up /*打开WiFi*/ ifconfig wlan0 192.168.0.10 netmask 255.255.255.0 /*设置IP与子网掩码*/ ifconfig wlan0 promisc /*设置 wlan0 为混杂模式 */</p><p><br></p><p>3.开启AP</p><p><br></p><p>udhcpd /etc/udhcpd.conf &amp; /*WiFi 地址、网关等配置信息*/ /home/hostapd -d /etc/hostapd.conf &amp; /*加密方式、用户名、密码等设置,此时用户名为FORLINX,密码为 */</p><p><br></p><p>4. 手机等移动终端可以通过WiFi连接到FCU1101的AP热点,访问外网。</p><p>5. 如果使用的华为的ME-909s模块,按软件手册中先进行拨号,再配置iptables转发规则,即可实现通过4G模块实现热点功能。</p><p>1.其中SPI部分驱动参考“SPI接口”部分。</p><p>2.首先搜索一下iMX6ULL-S是否自带mcp2515驱动。</p><p><br></p><p>neo@ubuntu:~\) cd drivers neo@ubuntu: ~/drivers \( find -name &#34;mcp25*&#34; https://www.bilibili.com/read/cv/net/can/spi/mcp251x.c neo@ubuntu: ~/drivers \) vi https://www.bilibili.com/read/cv/net/can/Makefile

在Makefile中添加相应配置:

obj-\((CONFIG_CAN_MCP251X) += mcp251x.o</p><p><br></p><p>3.在配置文件arch/arm/config/imx6ull_defconfig中设置CONFIG_CAN_MCP251X=y.</p><p>4.同时需要配置设备树。</p><p>配置clock时钟:</p><p><br></p><p>clocks{   mcp251x_clock : mcp251x_clock{   compatible = “fixed-clock”;   #clock-cells = &lt;0&gt;;  clock-frequency = &lt;&gt;;  };  };</p><p><br></p><p>配置参考电压</p><p><br></p><p>reg_can_3v3: regulator@0 {   compatible = &#34;regulator-fixed&#34;;   reg = &lt;0&gt;;   regulator-name = &#34;can-3v3&#34;;   regulator-min-microvolt = &lt;&gt;;   regulator-max-microvolt = &lt;&gt;;   gpios = &lt;&amp;gpio_spi 3 GPIO_ACTIVE_LOW&gt;;   startup-active-us = &lt;20000&gt;;   enable-active-high; };</p><p><br></p><p>配置PIN MUX:</p><p><br></p><p>pinctrl_ecspi2: ecspi2grp {  fsl,pins = &lt;  MX6UL_PAD_CSI_DATA03__ECSPI2_MISO 0x100b1 MX6UL_PAD_CSI_DATA02__ECSPI2_MOSI 0x100b1 MX6UL_PAD_CSI_DATA00__ECSPI2_SCLK 0x100b1 &gt;; };  pinctrl_ecspi2_cs: ecspi2_csgrp {  fsl,  pins = &lt;  MX6UL_PAD_CSI_DATA01__GPIO4_IO22 0x &gt;; }; pinctrl_can: can { fsl, pins = &lt; MX6UL_PAD_ CSI_DATA07__ GPIO4_IO28 0x100b1 &gt;; };</p><p><br></p><p>配置ecspi2的配置项:</p><p><br></p><p>&amp;ecspi2{    compatible = &#34;fsl,imx51-ecspi&#34;;    fsl,spi-num-chipselects = &lt;1&gt;;    cs-gpios = &lt;gpio4 22 0&gt;;    pinctrl-names = &#34;default&#34;;    pinctrl-0 = &lt;&amp;pinctrl_ecspi2&gt;,&lt;&amp;pinctrl_ecspi2_cs&gt;;    status = &#34;okay&#34;;    can0: mcp2515@0 {        pinctrl-names = &#34;default&#34;;        compatible = &#34;microchip,mcp2515&#34;;        pinctrl-0 = &lt;&amp;pinctrl_can&gt;;        cs-gpios = &lt;&amp;gpio4 22 0&gt;;        reg = &lt;0&gt;;        status = &#34;okay&#34;;        spi-max-frequency = &lt;&gt;;        clocks = &lt;&amp;mcp251x_clock&gt;;        interrupt-parent = &lt;&amp;gpio4&gt;;        interrupts = &lt;28 0x2&gt;;        vdd-supply = &lt;reg_can_3v3&gt;;        xceiver-supply = &lt;reg_can_3v3&gt;;    }; }</p><p><br></p><p>5. 验证</p><p>步骤1:按软件手册编译内核和设备树。注意查看编译完内核之后,是否在drivers/spi/下生成spi-imx.o,是否在drivers/net/can/下生成mcp251x.o,如果没生成,查看配置是否出错?生成*.o文件说明已经编译进内核。</p><p>步骤2 :替换烧写工具中的设备树和内核,重新烧写。开机选择刚替换的设备树。</p><p>步骤3 :此ecspi2驱动加载成功之后,cat /sys/bus/spi/devices/spi1.0/modalias会出现spi:mcp2515。</p><p>步骤4 :查看打印信息是否生成can0节点。</p><p>以将电阻触摸的4路触摸用作ADC为例。</p><p>1. 查看IMX6ULLRM.pdf手册中Chapter 13.2有:</p><p> </p><p>采用GPIO1_IO01、GPIO1_IO02、GPIO1_IO03、GPIO1_IO04作为四路ADC。</p><p>2. 怎么查找用哪个驱动,采用config中的哪个进行配置呢?</p><p>3. 查找ADC的驱动和配置选项。</p><p>设备树文件arch/arm/boot/dts/imx6ull-14x14-evk.dts中有</p><p>#include &lt;dt-bindings/input/input.h&gt; #include &#34;imx6ull.dtsi&#34;</p><p>打开imx6ul.dtsi文件,此文件为通用设备树配置文件</p><p><br></p><p>adc1: adc@0 {    compatible = &#34;fsl,imx6ul-adc&#34;, &#34;fsl,vf610-adc&#34;;    reg = &lt;0x0 0x4000&gt;;    interrupts = &lt;GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH&gt;;    clocks = &lt;&amp;clks IMX6UL_CLK_ADC1&gt;;    num-channels = &lt;9&gt;;    clock-names = &#34;adc&#34;;    status = &#34;disabled&#34;;            };</p><p>在drviers路径下查找相关文件,如下:</p><p>neo@ubuntu:~\) grep “fsl,vf610-adc” -nr Binary file built-in.o matches Binary file iio/built-in.o matches Binary file iio/adc/built-in.o matches Binary file iio/adc/vf610_adc.o matches iio/adc/vf610_adc.c:596:        { .compatible = “fsl,vf610-adc”, },

查看drives/spi/Makefile文件。此文件将adc路径下的驱动文件和配置文件中具体哪个配置联系起来。vf610_adc.c文件编译之后为vf610_adc.o文件。  

obj-\((CONFIG_VF610_ADC)        += vf610_adc.o</p><p>查看6ULL-S的配置文件arch/arm/config/imx6ull_defconfig中CONFIG_VF610_ADC=y。</p><p>查看drivers/iio/Makefile中,要编译ADC下的文件,需要有:</p><p><br></p><p>obj-y       += adc/</p><p>查看`,要编译iio下的文件,需要有:</p><p><br></p><p>obj-\)(CONFIG_IIO)       += iio/

查看6ul emmc的配置文件arch/arm/config/imx6ull_defconfig中CONFIG_IIO=y。

至此驱动配置完成。

4. 修改设备树文件arch/arm/boot/dts/imx6ull-14x14-evk.dts,添加adc1.

&adc1 {    pinctrl-names = “default”; pinctrl-0 = &lt;&pinctrl_adc1&gt;; vref-supply = &lt;&reg_vref_3v3&gt;;    status = “okay”; };

需要用到参考电压,添加reg_vref_3v3,如图:

reg_vref_3v3: regulator@3 {            compatible = “regulator-fixed”;            regulator-name = “vref-3v3”;            regulator-min-microvolt = &lt;&gt;;            regulator-max-microvolt = &lt;&gt;;            reg = &lt;3&gt;; };

在&iomuxc中添加所用到的具体引脚。此处关于上下拉电阻配置部分,参考“PINMUX说明”部分进行设置。如图:

pinctrl_adc1: adc1grp {                    fsl,pins = &lt;                        MX6UL_PAD_GPIO1_IO01GPIO1_IO01   0xb0                        MX6UL_PAD_GPIO1_IO02GPIO1_IO02   0xb0                        MX6UL_PAD_GPIO1_IO03GPIO1_IO03   0xb0                        MX6UL_PAD_GPIO1_IO04GPIO1_IO04   0xb0                    &gt;;        };

并将其他复用GPIO1_IO01、GPIO1_IO02、GPIO1_IO03、GPIO1_IO04的地方注释掉或者disabled。


讯享网

5. 编译生成dtb zImage,编译内核,查看drivers/iio/adc/是否生成vf610_adc.o,如果生成,已编译进内核。如果未生成,查看是否配置出错?

6. 替换dtb zImage,并烧写,启动。

7. 查看开发板/dev下有节点iio:device0,则驱动加载成功。

或者进入cd /sys/bus/iio/devices/iio:device0/路径查看。

以修改4.3吋为3.5吋屏为例。

1.修改内核设备树。

arch/arm/boot/dts/imx6ull-S-emmc-480x272r4dot3.dts找到&lcdif。

&lcdif {    pinctrl-names = “default”;        pinctrl-0 = &lt;&pinctrl_lcdif_dat                     &pinctrl_lcdif_ctrl&gt;;        display = &lt;&display0&gt;;        status = “okay”;    display0: display {        bits-per-pixel = &lt;24&gt;;        bus-width = &lt;24&gt;;        display-timings {            native-mode = &lt;&timing0&gt;;            timing0: timing0 {            clock-frequency = &lt;&gt;;            hactive = &lt;480&gt;;            vactive = &lt;272&gt;;            hfront-porch = &lt;2&gt;;            hback-porch = &lt;2&gt;;            hsync-len = &lt;41&gt;;            vback-porch = &lt;2&gt;;            vfront-porch = &lt;2&gt;;            vsync-len = &lt;10&gt;;            hsync-active = &lt;0&gt;;            vsync-active = &lt;0&gt;;            de-active = &lt;1&gt;;            pixelclk-active = &lt;0&gt;;            };        };    }; };

2.参考屏体手册中有:

 

 

3.修改设备树中

其中clock-frequency= fframe(hfront+hback+hsync+xres)(vfront+vback+vsync+yres)其中fframe=60

&lcdif {    pinctrl-names = “default”;        pinctrl-0 = &lt;&pinctrl_lcdif_dat                     &pinctrl_lcdif_ctrl&gt;;        display = &lt;&display0&gt;;        status = “okay”;    display0: display {        bits-per-pixel = &lt;24&gt;;        bus-width = &lt;24&gt;;        display-timings {            native-mode = &lt;&timing0&gt;;            timing0: timing0 {            clock-frequency = &lt;&gt;;            hactive = &lt;320&gt;;            vactive = &lt;240&gt;;            hfront-porch = &lt;20&gt;;            hback-porch = &lt;38&gt;;            hsync-len = &lt;30&gt;;            vback-porch = &lt;15&gt;;            vfront-porch = &lt;4&gt;;            vsync-len = &lt;3&gt;;            hsync-active = &lt;0&gt;;            vsync-active = &lt;0&gt;;            de-active = &lt;1&gt;;            pixelclk-active = &lt;1&gt;;            };        };    }; };

4.编译dtb文件。

neo@ubuntu:~$ make dtbs

生成arch/arm/boot/dts/imx6ull-S-emmc-320x240r3dot5.dts替换烧写工具中的dtb中文件。烧写。在uboot选择5-4.3吋屏。重启。发现uboot显示不正常,内核显示正常。

5.如果发现屏幕闪烁,根据分频设置,适当调整频率。

clock-frequency = &lt;&gt;;

或未在中心位置。微调下面6个参数。

hfront-porch = &lt;20&gt;; hback-porch = &lt;38&gt;; hsync-len = &lt;30&gt;; vback-porch = &lt;15&gt;; vfront-porch = &lt;4&gt;; vsync-len = &lt;3&gt;;

6. 修改文件系统目录下/etc/rc.d/qt_env.sh,根据实际需求调整QWS_SIZE的大小。

     

联系我们: 

服    务   热   线 :400-699-6866

飞凌嵌入式官网:https://www.forlinx.com/ 

官    方   商   城:https://forlinx.taobao.com/

                            https://forlinx.tmall.com/

小讯
上一篇 2025-05-04 15:09
下一篇 2025-06-03 12:07

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/141156.html