查看: 5693|回复: 3

[原创] 【LPC54114双核任务四】双核之音频库--2#双核音频之rtt finsh #

[复制链接]
  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    9530
    最后登录
    2022-5-12
    发表于 2017-7-16 22:45:54 | 显示全部楼层 |阅读模式
    本帖最后由 小马哥-1650185 于 2017-7-17 00:19 编辑

             其实这个帖子真的不知道该怎么开始,最近在研究rtt,基本上能看懂点门道吧,就先把研究出来的发出来吧,仅供参考,文件系统sd卡的spi  驱动 一直没有调试成功,挺郁闷的,还在研究中,现在任务四就卡在这里了。。。~~~~(>_<)~~~~

      关于rtt 的描述 上个帖子有讲到,就不细说实操的启动流程了。。。


    那么这个帖子就主要说下基于rtt的wm8904 启动吧


    先看下rtt的串口打印信息吧;
    111.png

    2.png


    代码定位分析:

    先看下rtt的启动函数rtthread_startup();
    这个函数很关键,看下内容
    1. /**
    2. * This function will startup RT-Thread RTOS.
    3. */
    4. void rtthread_startup(void)
    5. {
    6.         /* initialize board */
    7.         rt_hw_board_init();

    8.         /* show version */
    9.         rt_show_version();

    10.         /* initialize tick */
    11.         rt_system_tick_init();

    12.         /* initialize kernel object */
    13.         rt_system_object_init();

    14.         /* initialize timer system */
    15.         rt_system_timer_init();

    16.   /* initialize system heap */
    17.   rt_system_heap_init(HEAP_BEGIN, HEAP_END);

    18.         /* initialize scheduler system */
    19.         rt_system_scheduler_init();

    20.         /* initialize application */
    21.         rt_application_init();

    22.   /* initialize timer thread */
    23.   rt_system_timer_thread_init();

    24.         /* initialize idle thread */
    25.         rt_thread_idle_init();

    26.         /* start scheduler */
    27.         rt_system_scheduler_start();

    28.         /* never reach here */
    29.         return ;
    30. }
    复制代码


    1.rt_hw_board_init();
    这个函数中初始化了串口usart,spi,等,我们用到ode就是这两个喽
    rt_hw_uart_init():usart主要是串口打印,shell调试的
    rt_hw_spi_init():spi是文件系统sd卡 的配置
    5.png


    2.rt_show_version();
    1. void rt_show_version(void)
    2. {
    3.     rt_kprintf("\n \\ | /\n");
    4.     rt_kprintf("- RT -     Thread Operating System\n");
    5.     rt_kprintf(" / | \\     %d.%d.%d build %s\n",
    6.                RT_VERSION, RT_SUBVERSION, RT_REVISION, __DATE__);
    7.     rt_kprintf(" 2006 - 2015 Copyright by rt-thread team\n");
    8. }
    复制代码
    和图片这个对应

    33.png

    3.中间的时间片,对象,定时器,堆,调度器等都是和rtt有关的,暂且不管,跳过。。。。


    4.和我们直接有关的就是这个函数:rt_application_init();


    文件系统初始化(加载sd卡的音频文件的):

    6.png


    与wm8904初始化相关的是:
    1. #ifdef RT_USING_I2C
    2.     rt_i2c_core_init();
    3.     rt_hw_i2c_init();
    4. #endif

    5.     codec_hw_init("i2c1");
    复制代码


    重点看下wm8904的rtt初始化吧


    wm8904的iic初始化函数 rt_hw_i2c_init(),用来通过iic 读写配置wm8904寄存器的。
    codec_hw_init()初始化iis wm8904寄存,
    7.png

    8.png

    初始化ok 打印信息:
    9.png

    wm8904  iic写配置信息


    qqqqqqqqqqqqqq.png
    11232313.png

    吞吞吐吐拖拖拖.png

    打印信息:

    ppppppp.png


    这里说明wm8904 初始化ok了
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    然后初始化finsh系统和demo穿键的2条线程“led1“和 "led2",就是上贴说的rtt双线程点天灯


    5.后面初始化定时器线程,空闲线程,系统调度器暂时跳过不用关心吧。。。。


    最后看下finsh 吧


    zzzzzzzzzzzzzzzz.png

    这里涉及到shell编程,不会的自行百度脑补吧。。。玩过linux 的 都知道哈


    由于文件系统暂时未调通,只要执行和文件系统有关的命令,finsh 系统就挂了。。。。


    我们来看下当前rtt系统的运行的线程吧


    yyyyyyyyy.png

    是不是有上个帖子中创建的两个led的线程。。。。

    查看codec  id信息

    aaaaaaaa.png

    rtt内存使用情况

    ggggggggggggg.png


    好了 这个帖子就到这里吧,说实话 ,任务四 涉及的知识 还是挺丰富的,同学们要加油啦

    好好
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2018-7-31 08:40
  • 签到天数: 43 天

    连续签到: 1 天

    [LV.5]常住居民I

    299

    主题

    876

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    14849
    最后登录
    2020-3-1
    发表于 2017-7-17 13:15:35 | 显示全部楼层
    顶一个,大家任务四加油啊~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    9530
    最后登录
    2022-5-12
     楼主| 发表于 2017-7-17 13:38:23 | 显示全部楼层
    doatello 发表于 2017-7-17 13:15
    顶一个,大家任务四加油啊~

    版主大大,帮问下FAE  sd卡 驱动哈,这个文件“drv_spi.c”,那个demo用的是spi1, 我改成54114上面用到的spi2,初始化都过不去,仿真发现rtt卡到  idle 线程了。。。把 gpio,基地址, DMA通道 都改了,还是不工作,没辙了
    好好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    连续签到: 1 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5668
    最后登录
    2021-12-22
    发表于 2017-7-17 14:15:24 | 显示全部楼层
    本帖最后由 okwh 于 2017-7-17 14:17 编辑

    唉,简直是个坑...  SDK、LPCOpen、rtThread、万利的 都互不兼容,要兼收并蓄集合各家之长,还要对付双核的复杂、各家SPI/SD卡的不同、涉及中断/DMA/FIFO、音频流解码, 最后任务还要对付语音识别....., 还真是考验人啊。

    建议 任务四延期吧
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-10-26 22:50 , Processed in 0.087737 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表