lugl4313820 发表于 2022-4-19 06:34

【平头哥RVB2601创意应用开发】下载程序报错

<p>【问题】下载程序报错为:</p>

<p>报错的给出的提示是:1、检查物理连接。经检查跳线是正常的。</p>

<p>2、检查是不是上电了,经检查,显示屏是亮的,LED灯也是亮的。</p>

<p>3、检查时钟。目前CH2601是正常工作的,还可以正常通讯。</p>

<p>4、检查电平。目前串口是可以打印数据的,也没有问题。</p>

<p>跟平头哥工单交流了,目前还没有得到解决。希望各位帮看看是什么问题。</p>

<p>【情况说明】为了使用串口1,我想使用了下载口的PA19、PA20。下载程序后,重启,串口1是可以用了,但是下载程序就出现连接不上了。</p>

<p>board.c</p>

<pre>
<code>/*
* Copyright (C) 2019-2020 Alibaba Group Holding Limited
*/
#include &lt;board.h&gt;
#include &lt;drv/pin.h&gt;

static void board_pinmux_config(void)
{
    csi_pin_set_mux(CONSOLE_TXD, CONSOLE_TXD_FUNC);
    csi_pin_set_mux(CONSOLE_RXD, CONSOLE_RXD_FUNC);
       
        csi_pin_set_mux(PA20, PA20_UART1_TX);
    csi_pin_set_mux(PA19, PA19_UART1_RX);
}

void board_init(void)
{
    board_pinmux_config();
}
</code></pre>

<p>init.c</p>

<pre>
<code>
#include &lt;stdbool.h&gt;
#include &lt;aos/aos.h&gt;
#include &lt;yoc/yoc.h&gt;
#include &lt;devices/devicelist.h&gt;

#include "board.h"
#include "app_init.h"
#include "drv/pin.h"
#include "drv/uart.h"
const char *TAG = "INIT";

#ifndef CONSOLE_UART_IDX
#define CONSOLE_UART_IDX 0
#endif


#include &lt;aos/hal/uart.h&gt;

#define UART1_PORT_NUM1
#define UART_BUF_SIZE   10
#define UART_TX_TIMEOUT 10
#define UART_RX_TIMEOUT 10

/* define dev */
uart_dev_t uart1;

/* data buffer */
char uart_data_buf;


void init_uart1_init(void)
{
       int count   = 0;
    int ret   = -1;
    int i       = 0;
    int rx_size = 0;

    /* uart port set */
    uart1.port = UART1_PORT_NUM;

    /* uart attr config */
    uart1.config.baud_rate    = 115200;
    uart1.config.data_width   = DATA_WIDTH_8BIT;
    uart1.config.parity       = NO_PARITY;
    uart1.config.stop_bits    = STOP_BITS_1;
    uart1.config.flow_control = FLOW_CONTROL_DISABLED;
    uart1.config.mode         = MODE_TX_RX;

    /* init uart1 with the given settings */
    ret = hal_uart_init(&amp;uart1);
    if (ret != 0) {
      printf("uart1 init error !\n");
    }

    /* init the tx buffer */
    for (i = 0; i &lt; UART_BUF_SIZE; i++) {
      uart_data_buf = i + 1;
    }

    /* send 0,1,2,3,4,5,6,7,8,9 by uart1 */
    ret = hal_uart_send(&amp;uart1, uart_data_buf, UART_BUF_SIZE, UART_TX_TIMEOUT);
    if (ret == 0) {
      printf("uart1 data send succeed !\n");
    }

}

void board_yoc_init()
{
    board_init();
    uart_csky_register(1);
    console_init(CONSOLE_UART_IDX, 115200, 128);
       
       
    ulog_init();
       
    aos_set_log_level(AOS_LL_DEBUG);
   
    LOGI(TAG, "Build:%s,%s",__DATE__, __TIME__);
    /* load partition */
    // int ret = partition_init();
    // if (ret &lt;= 0) {
    //   LOGE(TAG, "partition init failed");
    // } else {
    //   LOGI(TAG, "find %d partitions", ret);
    // }

    board_cli_init();
}
</code></pre>

<p>在主程中启动init_uart1_init();串口1的输出也是正常。</p>

lugl4313820 发表于 2022-4-19 06:36

<p></p>

<p>跳线也恢复回去,也是正常的。&nbsp;</p>

梦溪开物 发表于 2022-5-11 16:10

<p>最后这个问题是怎么解决的呀?</p>

<p>&nbsp;</p>

lugl4313820 发表于 2022-5-11 18:49

梦溪开物 发表于 2022-5-11 16:10
最后这个问题是怎么解决的呀?

&nbsp;

<p><a href="https://bbs.eeworld.com.cn/thread-1200614-1-1.html">【平头哥RVB2601创意应用开发】JTAG配置成串口后下载程序出错解决方法 - 平头哥RISC-V RVB2601活动专区 - 电子工程世界-论坛 (eeworld.com.cn)</a>这篇文章里有介绍。</p>
页: [1]
查看完整版本: 【平头哥RVB2601创意应用开发】下载程序报错