[新版中科蓝讯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> </p>
<p>首先要说的是这个“”RT-Thread Settings,在“Debug”视口内才会有。而且,如果IDE内出现了这样的警告提示:“Invalid project path: Duplicate path entries found (/test_UART_Bluetrum base-path:test_UART_Bluetrum-1 isSystemInclude:true includePath:rt-thread/include/libc), path: .”就会打不开。</p>
<p>需要将默认的“drv_usart.c”中这段代码:</p>
<pre>
<code class="language-cpp">for (int i = 0; i < obj_num; i++)
{
/* init UART object */
uart_obj<i>.config = &uart_config<i>;
uart_obj<i>.serial.ops = &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(&uart_obj<i>.serial, uart_obj<i>.config->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 < obj_num; i++)
{
/* init UART object */
uart_obj<i>.config = &uart_config<i>;
uart_obj<i>.rx_idx = 0;
uart_obj<i>.rx_idx_prev = 0;
uart_obj<i>.serial.ops = &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("uart%d malloc failed!", i);
continue;
}
//如果是串口1,修改波特率为:115200
if (i == 1)
{
uart_obj<i>.serial.config.baud_rate = 115200;
}
//------------------
/* register UART device */
result = rt_hw_serial_register(&uart_obj<i>.serial, uart_obj<i>.config->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> </i></i></i></i></i></i></p>
<p>在这里开启 “UART1”:</p>
<p></p>
本帖最后由 MianQi 于 2021-9-15 11:23 编辑
<p>在“Downloader v1.9.7”提供的“Develop”界面中能看到“Hello, world”,但是,输一次“uart_sample”没有反应,再输一次,报错:</p>
<p></p>
<p> </p>
<p>搜索这个“Function”:</p>
<p></p>
<p> </p>
<p>在这里找到了函数原型:</p>
<p></p>
<p> </p>
<p>在这里找到了报错的提示:</p>
<p></p>
<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->object_list.next;
node != &(information->object_list);
node= node->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>
<p>将整个项目导出:</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
本帖最后由 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> </p>
<p>首先,点击“RT-Thread”插件图标:</p>
<p></p>
<p> </p>
<p>选择“添加项目到当前工作空间”:</p>
<p></p>
<p> </p>
<p>将已经解压的文件夹添加进来:</p>
<p></p>
<p></p>
<p> </p>
<p>添加进来了:</p>
<p></p>
<p> </p>
<p>根据提示安装一个软件工具:</p>
<p></p>
<p> </p>
<p>“Build”没有报错。插上板子,打开串口:</p>
<p></p>
<p></p>
<p> </p>
<p>但是没有串口通信:</p>
<p></p>
<p>看来RT-Thread对Linux的支持目前尚不具备。</p>
<p>这个RT-Thread对Linux的支持待完善,环境的软件包并不是宣传的很丰富</p>
<p>的却如此,RT-Thread对Linux的支持目前尚不完善,他们也在及时的更新。</p>
<p>在Linux下使用RTThread确实有问题,我之前弄了,有些代码就会出问题。</p>
<p>为啥要在Linux下面折腾VSCode? 你会发现弄了半天,最后还是会用最简单的工具,哈哈。</p>
freebsder 发表于 2021-9-17 18:06
为啥要在Linux下面折腾VSCode? 你会发现弄了半天,最后还是会用最简单的工具,哈哈。
<p>这样就能用全正版了,心里会轻松一些。</p>
MianQi 发表于 2021-9-17 18:13
这样就能用全正版了,心里会轻松一些。
<p>我看你前面楼里面的IDE是eclipse改的呀,这个不可能收费吧。</p>
<p>工具啥的少折腾,没啥意思,用方便的,顺手的就好了。我曾经花了好几年时间配置各种linux桌面,服务,学vim,结果到现在Linux能跑就行,要搞代码用VS远程过去,vim只记得最基本最简单的操作。</p>
<p>问题是,忘了所有这些东西,不但不影响我搞事情,反而有趁手工具可以节省精力和时间。</p>
页:
[1]