FAQ"/>
MA35D1 FAQ
默认NAU8822的IIC接口用GPIO-base的驱动,如何换成硬件IIC的驱动
修改dts配置文件,以som 256的camera为例,查看实际硬件连接的是i2C3:
&i2c_gpio0 {
status = "disabled";
hm1055@24 {
compatible = "himax,hm1055";
reg = <0x24>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ccap0>;
clocks = <&clk CCAP0_GATE>;
clock-names = "xclk";
reset-gpios = <&gpiom 1 GPIO_ACTIVE_LOW>; /* PM1 */
powerdown-gpios = <&gpiok 8 GPIO_ACTIVE_HIGH>; /* PK8 */
port {
hm1055_0: endpoint {
remote-endpoint = <&ccap0_1>;
};
};
};
};
修改为:
&i2c3 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
hm1055@24 {
compatible = "himax,hm1055";
reg = <0x24>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ccap0>;
clocks = <&clk CCAP0_GATE>;
clock-names = "xclk";
reset-gpios = <&gpiom 1 GPIO_ACTIVE_LOW>; /* PM1 */
powerdown-gpios = <&gpiok 8 GPIO_ACTIVE_HIGH>; /* PK8 */
port {
hm1055_0: endpoint {
remote-endpoint = <&ccap0_1>;
};
};
};
};
然后增加i2c3相关配置:
i2c3 {
pinctrl_i2c3: i2c3grp{
nuvoton,pins =
<SYS_GPM_MFPH_PM14MFP_I2C3_SDA &pcfg_default>,
<SYS_GPM_MFPH_PM15MFP_I2C3_SCL &pcfg_default>;
};
};
【MA35D1】在IOT开发板的DTS基础上如何修改可以支持EBI接口
以ma35d1-iot-512m.dts配置为例:
文件ma35d1.dtsi中有定义EBI,默认是disable的,如果需要打开,把status状态修改为“okay”
ebi0: ebi@40100000 {
compatible = "nuvoton,ma35d1-ebi";
reg = <0x0 0x40100000 0x0 0x10>;
bank = <0>;
clock-enable = "ebi_gate";
clock-names = "ebi_gate";
clocks = <&clk EBI_GATE>;
status = "disabled";
busmode = <1>;//Address/Data Bus Separate Mode. 0:Disabled, 1:Enabled
csactiveLevel = <0>;//0:Low, 1: High
datawidth = <1>;//0:8bit, 1: 16bit
MCLKDIV = <2>;//0 ~ 7,EBI_CTL0[10:8]
tALE = <1>;//0 ~ 7,EBI_CTL0[18:16]
tACC = <1>;//0 ~ 31, EBI_TCTLx[7:3]
tAHD = <1>;//0 ~ 7, EBI_TCTLx[10:9]
IDLE = <3>;//0 ~ 15, EBI_TCTLx[27:24] and EBI_TCTLx[15:12]
};
然后在文件ma35d1-iot-512m.dts中添加ebi 管脚配置(可以参考ma35d1-som-256m.dts):
&ebi0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ebi0_16bit>;
};
ebi0 {
pinctrl_ebi0_16bit: ebi0_16bitgrp{
nuvoton,pins =
<SYS_GPG_MFPH_PG11MFP_EBI_AD0 &pcfg_default>,
<SYS_GPG_MFPH_PG12MFP_EBI_AD1 &pcfg_default>,
<SYS_GPG_MFPH_PG13MFP_EBI_AD2 &pcfg_default>,
<SYS_GPG_MFPH_PG14MFP_EBI_AD3 &pcfg_default>,
<SYS_GPG_MFPH_PG15MFP_EBI_AD4 &pcfg_default>,
......
具体的管脚需要确认电路图有没有和其他模块复用,然后根据实际情况来配置管脚。
然后make linux-menuconfig,
打开ebi配置选项:Device Driver->Misc devices
找到Nuvoton MA35D1 EBI support并勾选这个
修改保存后make linux-rebuild
然后make
【MA35D1】支持RGMII和RMII,在设备树应该如何配置?
在文件ma35d1.dtsi中原始配置默认的是千兆,即:phy-mode = "rgmii-id"
如需要修改,在对应的DTS文件中进行相应的配置,以ma35d1-som-256m.dts为例:
&gmac0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gmac0>;
};
没有重定义phy-mode,默认是1000M,如果要配置成100M,修改如下:
&gmac0 {
status = "okay";
phy-mode = "rmii";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gmac0>;
};
备注:
100M:
phy-mode = "rmii";
1000M:
phy-mode = "rgmii-id";
【MA35D1】如何修改配置让MT29F8G08ABACA NAND可以正常启动
nand flash 8G, page size 4K, 64pages/block, block size 256Kbytes
W29N08GVxxA flash 8G, page size 2K, 64pages, block size 128KB
1、NuWriter:
header-nand.json:
{
"header":
{
"version": "0x20210119",
"spiinfo":
{
"pagesize": "4096",
"sparearea": "224",
"pageperblk": "64",
"quadread": "0x6B",
"readsts": "0x05",
"writests": "0x01",
"stsvalue": "0x02",
"dummy1": "0",
"dummy2": "1",
"suspintvl": "1"
},
"secureboot": "no",
"entrypoint": "0x28000000",
"aeskey" : "5E76953BF598581F925B7995157844747FABE669ABF000345E0EE21B63624D59",
"ecdsakey": "5E76953BF598581F925B7995157844747FABE669ABF000345E0EE21B63624D59",
"image":
[
{
"offset": "0x300000",
"loadaddr": "0x28023000",
"type": "3",
"file": "bl2.dtb"
},
{
"offset": "0x380000",
"loadaddr": "0x28000000",
"type": "4",
"file": "bl2.bin"
}
]
}
}
pack-nand.json:
{
"image":
[
{
"offset": "0x000000",
"file": "header.bin",
"type": 1
},
{
"offset": "0x300000",
"file": "bl2.dtb",
"type": 0
},
{
"offset": "0x380000",
"file": "bl2.bin",
"type": 0
},
{
"offset": "0x400000",
"file": "fip.bin-nand",
"type": 1
},
{
"offset": "0x600000",
"file": "uboot-env.bin-nand",
"type": 1
},
{
"offset": "0x700000",
"file": "Image.dtb",
"type": 1
},
{
"offset": "0x800000",
"file": "Image",
"type": 1
},
{
"offset": "0x1C00000",
"file": "rootfs.ubi",
"type": 1
}
]
}
2、TFA:
ma35d1.dtsi:
nand: nand@401A0000 {
compatible = "nuvoton,ma35d1-nand";
nand-on-flash-bbt;
/* nand information */
nand-ecc-strength = <8>;
nand-ecc-step-size = <512>;
nand-page-size = <4096>;
nand-oob-size = <224>;
nand-page-count = <64>;
nand-block-count = <4096>;
nand-image-offset = <0x400000>;
};
3、uboot:
CONFIG_NAND_BOOT=y
CONFIG_ENV_SIZE=0x100000
CONFIG_ENV_OFFSET=0x600000
CONFIG_MTDPARTS_DEFAULT="mtdparts=nand0:6m(uboot),1m(uboot-env),1m(device-tree),20m(kernel),100m(rootfs)"
4、Linux:
ma35d1.dtsi:
nand-ecc-strength = <8>;
nand-ecc-step-size = <512>;
nand-on-flash-bbt;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
uboot@0 {
label = "nand-uboot";
reg = <0x0000000 0x600000>;
read-only;
};
uboot-env@600000 {
label = "nand-uboot-env";
reg = <0x600000 0x100000>;
};
device-tree@700000 {
label = "nand-device-tree";
reg = <0x700000 0x100000>;
};
kernel@800000 {
label = "nand-kernel";
reg = <0x800000 0x1400000>;
};
rootfs@1C00000 {
label = "nand-rootfs";
reg = <0x1C00000 0x6400000>;
};
};
};
5、Rootfs:
BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000
BR2_TARGET_ROOTFS_UBI_SUBSIZE=4096
BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3E000
BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1000
BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=400
更多推荐
MA35D1 FAQ
发布评论