查看: 581|回复: 1

[原创] 【LPC55S69移植RT-Thread】1-ubuntu下初试

[复制链接]
  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1371
    最后登录
    2024-3-21
    发表于 2023-3-21 00:01:41 | 显示全部楼层 |阅读模式
    本帖最后由 day_day 于 2023-3-21 00:05 编辑

                                    
    • 虽然没有申请板卡,不过手头恰好以前的存货,因此也手痒痒想试一下。
    • 由于现在基本已经脱离windows开发环境,转战linux,因此MDK是用不了了,至少在支持跨平台的MDK6在这个月放出来之前是用不了,因此打算试一下linux+vscode+gcc的开发环境。



    基础rt-thread源码获取

                                     rtt-lpc55-vs4.png
    • 拷贝bsp下例程到自己的目录






    配置


    - RTT的vscode扩展与eide的扩展有些类似的地方,因为都是需要GCC交叉编译链和cortex-debug插件支持;但他们是完全不同的两个体系。
    rtt-lpc55-vs6.png


    - 配置编译工具
    1.     "RTT_Studio.Toolchain_Location": "/usr/local/mcuxpressoide-11.7.0_9198/ide/tools/bin",
    2.     "RTT_Studio.Debuger.Gdb_Path": "/usr/local/mcuxpressoide-11.7.0_9198/ide/tools/bin/arm-none-eabi-gdb"
    复制代码


    - 配置RTT源码路径
       

    1. "RTT_Studio.RTT_ROOT": "/home/xxx/rt-thread",
    复制代码

    - 修改"SConstruct"编译脚本里关于板件库地址的 SDK_ROOT
    1. SDK_ROOT = "/home/xxx/rt-thread/bsp/lpc55sxx/"
    复制代码


    - 点击编译


    rtt-lpc55-vs5.png



    烧录


    - RTT扩展有烧录按钮,但只支持jlink和stlink,或者进行qemu仿真,因此还是需要走 pyocd+命令行支持
    1. pyocd flash --erase chip --target lpc55s69 rtthread.elf
    复制代码







    调试
    - RTT扩展有烧录按钮,但只支持jlink和stlink,或者进行qemu仿真,因此还是需要走cortex-debug+pyocd+命令行支持

    - 在命令行中使用 pyocd gdbserver 功能,启动类似 openocd 和 gdbserver 的服务端。

    1. pyocd gdbserver --target lpc55s69 -p 3336 -T 4446 -R 5556
    复制代码

    - vscode 的 launch.json 文件配置如下:
    1.         {
    2.                 "name": "pyocd-remote",
    3.                 "cwd": "${workspaceRoot}",
    4.                 "type": "cortex-debug",
    5.                 "request": "attach",
    6.                 "servertype": "external",
    7.                 "gdbTarget": "localhost:3336",
    8.                 "device": "lpc55s69",
    9.                 "executable": "build/Debug/lpc55_fourth.elf",
    10.                 "runToEntryPoint": "main",
    11.                 "targetId": "lpc55s69"
    12.         },
    复制代码


    - 点击F5即可仿真
    - 如果想仿真之前先下载,可以配置为:

    1. "request": "launch"
    复制代码



    但不是每一种仿真器都可以支持,我手头的ulink me和stlink多多少少都会有点问题,需要命令行敲 pyocd flash 命令才能正常下载,但dap link都是支持直接launch的。






    测试
    - 测试结果并不顺利,hardfault卡在串口的初始化上:
    1.         rt_hw_board_init
    2.         rt_hw_uart_init                        INIT_BOARD_EXPORT(rt_hw_uart_init);
    3.         rt_hw_serial_register
    4.         rt_device_register
    5.         rt_device_find
    6.         RT_DEBUG_NOT_IN_INTERRUPT        死在这里
    复制代码

    - 为了确认不是开发环境的问题,我翻箱倒柜找出了友商经典的32板子,把正点原子的atk-nano的rt-thread bsp编译了一次下载测试。虽然中途出现0x1ffff3b6之类无法运行的问题,但改了下boot跳线帽之后就正常进入。
    - 仔细检查了一下出问题的函数,发现友商板子运行不会进下面的rk_kprintf。
    - 然后发现 level = rt_hw_interrupt_disable(); 返回的不是0
    - 然后又发现 rt_interrupt_nest 初始化的时候就已经是250

    rtt-lpc55-vs1.png
    - 尝试通过串口强行置0,但后面出现了更多HardFault。

    rtt-lpc55-vs2.png rtt-lpc55-vs3.png
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-2-26 09:09
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    7

    主题

    986

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1996
    最后登录
    2024-4-20
    发表于 2023-3-21 09:21:22 | 显示全部楼层
    现在还没适配好GCC吧,只有Keil能正常跑
    ~~~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-20 15:44 , Processed in 0.118826 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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