MianQi 发表于 2021-9-15 12:15

[新版中科蓝讯AB32VG1 RISC-V开发板] - 7:在 Ubuntu 上的 VS Code 里使用 RT-Thread

本帖最后由 MianQi 于 2021-9-14 21:45 编辑

<p>参照的例程是这个:中科蓝讯AB32VG1上的UART实践(地址:<a href="https://docs.qq.com/doc/DTVVWWXpLRVl6cER2?_t=1626260921919" target="_blank">https://docs.qq.com/doc/DTVVWWXpLRVl6cER2?_t=1626260921919</a>)</p>

<p>&nbsp;</p>

<p>首先要说的是这个&ldquo;&rdquo;RT-Thread Settings,在&ldquo;Debug&rdquo;视口内才会有。而且,如果IDE内出现了这样的警告提示:&ldquo;Invalid project path: Duplicate path entries found (/test_UART_Bluetrum base-path:test_UART_Bluetrum-1 isSystemInclude:true includePath:rt-thread/include/libc), path: .&rdquo;就会打不开。</p>

MianQi 发表于 2021-9-15 12:15

<p>需要将默认的&ldquo;drv_usart.c&rdquo;中这段代码:</p>

<pre>
<code class="language-cpp">for (int i = 0; i &lt; obj_num; i++)
    {
      /* init UART object */
      uart_obj<i>.config          = &amp;uart_config<i>;
      uart_obj<i>.serial.ops      = &amp;ab32_uart_ops;
      uart_obj<i>.serial.config   = config;
      uart_obj<i>.serial.config.baud_rate = 1500000;

      /* register UART device */
      result = rt_hw_serial_register(&amp;uart_obj<i>.serial, uart_obj<i>.config-&gt;name,
                                       RT_DEVICE_FLAG_RDWR
                                       | RT_DEVICE_FLAG_INT_RX
                                       | RT_DEVICE_FLAG_INT_TX
                                       | uart_obj<i>.uart_dma_flag
                                       , NULL);
      RT_ASSERT(result == RT_EOK);
    }
</i></i></i></i></i></i></i></i></code></pre>

<p><i><i><i>替换为:</i></i></i></p>

<pre>
<i><i><i>
<code class="language-cpp">    for (int i = 0; i &lt; obj_num; i++)
    {
      /* init UART object */
      uart_obj<i>.config          = &amp;uart_config<i>;
      uart_obj<i>.rx_idx          = 0;
      uart_obj<i>.rx_idx_prev   = 0;
      uart_obj<i>.serial.ops      = &amp;ab32_uart_ops;
      uart_obj<i>.serial.config   = config;
      uart_obj<i>.serial.config.baud_rate = 1500000;
      uart_obj<i>.rx_buf          = rt_malloc(uart_config<i>.fifo_size);

      if (uart_obj<i>.rx_buf == RT_NULL) {
            LOG_E(&quot;uart%d malloc failed!&quot;, i);
            continue;
      }
      //如果是串口1,修改波特率为:115200
      if (i == 1)
      {
            uart_obj<i>.serial.config.baud_rate = 115200;
      }
      //------------------
      /* register UART device */
      result = rt_hw_serial_register(&amp;uart_obj<i>.serial, uart_obj<i>.config-&gt;name,
                                       RT_DEVICE_FLAG_RDWR
                                       | RT_DEVICE_FLAG_INT_RX
                                       | RT_DEVICE_FLAG_INT_TX
                                       | uart_obj<i>.uart_dma_flag
                                       , NULL);
      RT_ASSERT(result == RT_EOK);
    }
</i></i></i></i></i></i></i></i></i></i></i></i></i></i></code></i></i></i></pre>

<p><i><i><i><i><i><i>&nbsp;</i></i></i></i></i></i></p>

MianQi 发表于 2021-9-15 12:15

<p>在这里开启 &ldquo;UART1&rdquo;:</p>

<p></p>

MianQi 发表于 2021-9-15 12:15

本帖最后由 MianQi 于 2021-9-15 11:23 编辑

<p>在&ldquo;Downloader v1.9.7&rdquo;提供的&ldquo;Develop&rdquo;界面中能看到&ldquo;Hello, world&rdquo;,但是,输一次&ldquo;uart_sample&rdquo;没有反应,再输一次,报错:</p>

<p></p>

<p>&nbsp;</p>

<p>搜索这个&ldquo;Function&rdquo;:</p>

<p></p>

<p>&nbsp;</p>

<p>在这里找到了函数原型:</p>

<p></p>

<p>&nbsp;</p>

<p>在这里找到了报错的提示:</p>

<p></p>

MianQi 发表于 2021-9-15 12:15

<pre>
<code class="language-cpp">    /* get object information */
    information = rt_object_get_information(type);
    RT_ASSERT(information != RT_NULL);

    /* check object type to avoid re-initialization */

    /* enter critical */
    rt_enter_critical();
    /* try to find object */
    for (node= information-&gt;object_list.next;
            node != &amp;(information-&gt;object_list);
            node= node-&gt;next)
    {
      struct rt_object *obj;

      obj = rt_list_entry(node, struct rt_object, list);
      if (obj) /* skip warning when disable debug */
      {
            RT_ASSERT(obj != object);
      }
    }</code></pre>

<p>这段代码的确切含义,待解!</p>

MianQi 发表于 2021-9-15 12:15

<p>将整个项目导出:</p>

<p></p>

<p></p>

<p></p>

<p></p>

<p></p>

<p></p>

MianQi 发表于 2021-9-15 12:15

本帖最后由 MianQi 于 2021-9-15 12:15 编辑

<p>在VS Code中导入,这部分参考了这个教程 - https://club.rt-thread.org/ask/article/2864.html(<span style="font-weight:normal;text-decoration:none;color:#inherit;">Vscode中使用RT_Thread Studio插件初体验</span>)</p>

<p>&nbsp;</p>

<p>首先,点击&ldquo;RT-Thread&rdquo;插件图标:</p>

<p></p>

<p>&nbsp;</p>

<p>选择&ldquo;添加项目到当前工作空间&rdquo;:</p>

<p></p>

<p>&nbsp;</p>

<p>将已经解压的文件夹添加进来:</p>

<p></p>

<p></p>

<p>&nbsp;</p>

<p>添加进来了:</p>

<p></p>

<p>&nbsp;</p>

<p>根据提示安装一个软件工具:</p>

<p></p>

<p>&nbsp;</p>

<p>&ldquo;Build&rdquo;没有报错。插上板子,打开串口:</p>

<p></p>

<p></p>

<p>&nbsp;</p>

<p>但是没有串口通信:</p>

<p></p>

<p>看来RT-Thread对Linux的支持目前尚不具备。</p>

Jacktang 发表于 2021-9-16 07:09

<p>这个RT-Thread对Linux的支持待完善,环境的软件包并不是宣传的很丰富</p>

annysky2012 发表于 2021-9-16 10:09

<p>的却如此,RT-Thread对Linux的支持目前尚不完善,他们也在及时的更新。</p>

w494143467 发表于 2021-9-17 17:32

<p>在Linux下使用RTThread确实有问题,我之前弄了,有些代码就会出问题。</p>

freebsder 发表于 2021-9-17 18:06

<p>为啥要在Linux下面折腾VSCode? 你会发现弄了半天,最后还是会用最简单的工具,哈哈。</p>

MianQi 发表于 2021-9-17 18:13

freebsder 发表于 2021-9-17 18:06
为啥要在Linux下面折腾VSCode? 你会发现弄了半天,最后还是会用最简单的工具,哈哈。

<p>这样就能用全正版了,心里会轻松一些。</p>

freebsder 发表于 2021-9-18 08:59

MianQi 发表于 2021-9-17 18:13
这样就能用全正版了,心里会轻松一些。

<p>我看你前面楼里面的IDE是eclipse改的呀,这个不可能收费吧。</p>

<p>工具啥的少折腾,没啥意思,用方便的,顺手的就好了。我曾经花了好几年时间配置各种linux桌面,服务,学vim,结果到现在Linux能跑就行,要搞代码用VS远程过去,vim只记得最基本最简单的操作。</p>

<p>问题是,忘了所有这些东西,不但不影响我搞事情,反而有趁手工具可以节省精力和时间。</p>
页: [1]
查看完整版本: [新版中科蓝讯AB32VG1 RISC-V开发板] - 7:在 Ubuntu 上的 VS Code 里使用 RT-Thread