HI3559A soc中使用sensor hub的uart0

simonhuang 2018-05-25 21:45:17 4214

背景介绍

近期在Hi3559A上开发,项目需要在不启动M7的情况下,通过sensor hub的uart0与外部mcu的通信。根据《外围设备驱动操作指南》中介绍的步骤:

下面提供一个 Soc 使用 Sensor Hub 的 uart0 外设资源的操作示例,SPI 与 I2C 均可参考以下步骤操作:
步骤 1. 配置 menuconfig。在内核源码目录下输入以下命令:
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig
按以下路径选中配置:
Platform selection --->
Enable to access the devices of m7
[*]
保存退出。
步骤 2. 在 uboot 环境配置 Sensor Hub 时钟。可通过使用默认的“config_m7”命令把 Sensor
Hub 的时钟源配置为 PLL(192M)时钟,该命令也同时配置 Sensor Hub 复位请求屏蔽
位为不屏蔽状态。如用户需要自定义 Sensor Hub 配置,可参考《Hi3559A/C V100 ultra-
HD Mobile Camera SoC 用户指南》3.12.6.6 章节。
步骤 3. 配置 Sensor Hub uart0 管脚复用。管脚配置可参考《Hi3559AV100_PINOUT_CN》或
《Hi3559CV100_PINOUT_CN》管脚控制寄存器。Uboot 下通过以下命令修改 uart0 设备
的管脚配置:
mw 0x18050030 0x1
mw 0x18050034 0x1
步骤 4. 修改 dts 文件,把 uart5(uart5 对应的是 Sensor Hub 的 uart0,详细可参考 dtsi 的配置)
的状态改为 okay。重新编译。
步骤 5. 下载编译好的内核镜像至板端并启动,即可通过/dev/ttyAMA5 操作 Sensor Hub 的 uart0设备.

参照以上步骤进行后,uboot的启动log中确实有枚举到sensor hub的uart0, A73这侧会枚举到/dev/ttyAMA5设备。
[ 0.010651] Serial: AMBA PL011 UART driver
[ 0.012245] 12100000.uart: ttyAMA0 at MMIO 0x12100000 (irq = 9, base_baud = 0) is a PL011 rev2
[ 0.475516] console [ttyAMA0] enabled
[ 0.479470] 12101000.uart: ttyAMA1 at MMIO 0x12101000 (irq = 10, base_baud = 0) is a PL011 rev2
[ 0.488413] 12102000.uart: ttyAMA2 at MMIO 0x12102000 (irq = 11, base_baud = 0) is a PL011 rev2
[ 0.497349] 12103000.uart: ttyAMA3 at MMIO 0x12103000 (irq = 12, base_baud = 0) is a PL011 rev2
[ 0.506288] 12104000.uart: ttyAMA4 at MMIO 0x12104000 (irq = 13, base_baud = 0) is a PL011 rev2
[ 0.515232] 18060000.uart: ttyAMA5 at MMIO 0x18060000 (irq = 14, base_baud = 0) is a PL011 rev2

但是,通过该串口发送数据时,t发出数据的速率很低,只有600bps,远远达不到115200,此时就开始怀疑uart控制器的时钟或者sensor hub的时钟配置有问题。
查看了uboot中config_m7命令的实现:

 static int config_m7(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
    {
        writel(0x069E36E3, SENSOR_HUB_CRG_2);  
        writel(0x00810001, SENSOR_HUB_CRG_1);
        writel(0x03, SENSOR_HUB_CRG_0);  
        writel(0x1110, SENSOR_HUB_CRG_4); 
        writel(0x01, SENSOR_HUB_CRG_11);  
        printf("cortex-M7 is configed!\n");
        return 0;
    }

通过以上流程看到config_m7配置了sensor hub的pll,选择pll为sensor hub的时钟输入,配置apb总线时钟,m7 cpu时钟等。也许是这里的配置还不够,导致了uart的输出速率很低。

现在我没有执行config_m7, 而是在kernel起来之后,通过himm配置0x1802001c为0x30000002,即设置uart0clk sel为soc_24M,撤销uart0位,uart时钟门控置1, 按照这种配置baud可以得到115200, 即只配置uart
0的相关时钟,没有配置pll及m7 cpu的时钟,这时串口输出速度正常了。

在此先mark一下,后续有时间再仔细查这个问题。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • wer 2020-12-05 02:02:06
    回复

    转手 收藏

相关专栏
关于作者
simonhuang

simonhuang

暂无个性签名~

原创2
阅读1.4w
收藏0
点赞0
评论2
打赏用户 0
我要创作
分享技术经验,可获取创作收益
分类专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
simonhuang
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区