This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMDX570LC43HDK烧录程序出现.out问题

Other Parts Discussed in Thread: HALCOGEN

跑一个HAL里的adc_example工程,笔记本已编译成功(但是笔记本连板子无反应,所以没法用),到台式机编译的时候出现“XXX(工程文件名).out"文件“not built”。

请问怎么回事,完全一样的代码一样的配置一样的操作。

  • error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "adc_3301.out" not built

    /** @example example_adcDisplay.c
    *   This is an example which describes the steps to create an example application which
    *   configures ADC to start conversion ona GIO trigger and display it over an uart .
    *   The digital value can be viewed on a pc terminal with the uart configures @ 9600
    *   no parity ,2 stop bits.
    *
    *
    *   @b Step @b 1:
    *
    *   Create a new project.
    *
    *   Navigate: -> File -> New -> Project
    *
    *   @image html example_createProject.JPG "Figure: Create a new Project"
    *
    *   @b Step @b 2:
    *
    *   Configure driver code generation:
    *   - Enable GIO driver
    *   - Enable SCI driver
    *   - Enable ADC driver
    *   - Disable others
    *
    *   Navigate: -> TMS570LCxx /RM5x -> Enable Drivers
    *
    *   @image html adcDisplay_enabledriver.JPG "Figure: SCI Enable Driver"
    *
    *
    *   @b Step @b 3:
    *
    *   Navigate: -> TMS570LCxx /RM5x -> ADC
    *
    *   Configure ADC General :
    *
    *   @image html adcDisplay1.JPG "Figure: ADC General Configuration"
    *
    *
    *   @b Step @b 4:
    *
    *   Configure ADC Group1 :
    *
    *   - Configure ADC Group 1 with "Hardware trigger" source as "GIOB0" at "Rising edge"
    *   - Enable ADC1 Group 1 channel selection Pin 0 and Pin 1
    *
    *   @image html adcDisplay2.JPG "Figure: ADC Group Configuration"
    *
    *   @b Step @b 5:
    *
    *   Configure SCI:
    *   - Configure SCI baudrate as 9600
    *
    *   Navigate: -> TMS570LCxx /RM5x -> ADC
    *
    *   @image html sci_uart1.JPG "Figure: SCI Configuration"
    *
    *   @b Step @b 6:
    *
    *   Copy the source code below into your sys_main.c or replace sys_main.c with this file.
    *
    *   The example file can also be found in the examples folder: ../HALCoGen/examples
    *
    *   @note HALCoGen generates an empty main function in sys_main.c,
    *         please make sure that you link in the right main function or copy the source into the user code sections of this file.
    *
    *
    */

    /* USER CODE BEGIN (0) */
    /* USER CODE END */

    /* Include Files */

    #include "HL_sys_common.h"
    #include "HL_system.h"

    /* USER CODE BEGIN (1) */

    #include "HL_esm.h"
    #include "HL_adc.h"
    #include "HL_sci.h"
    #include "HL_gio.h"

    #define  TSIZE1 12
    uint8  TEXT1[TSIZE1]= {'\r','\n','|','\t','C','H','.','I','D','=','0','x'};
    #define  TSIZE2 9
    uint8  TEXT2[TSIZE2]= {'\t','V','A','L','U','E','=','0','x'};


    adcData_t adc_data[2];
    void sciDisplayText(sciBASE_t *sci, uint8 *text, uint32 length);
    void sciDisplayData(sciBASE_t *sci, uint8 *text,uint32 length);
    void wait(uint32 time);

    /* USER CODE END */

    /** @fn void main(void)
    *   @brief Application main function
    *   @note This function is empty by default.
    *
    *   This function is called after startup.
    *   The user can use this function to implement the application.
    */

    /* USER CODE BEGIN (2) */
    /* USER CODE END */

    void main(void)
    {
    /* USER CODE BEGIN (3) */
           uint32 ch_count=0;
            uint32 id    =0;
            uint32 value =0;

            /* initialize gio     */
            gioInit();
            gioSetDirection(gioPORTB, 1);

            /* initialize sci/sci-lin  : even parity , 2 stop bits */
            sciInit();

            /* initialize ADC  */
            /* Group1 -> Channel 0 and 1                        */
            /* HW trigger trigger source as GIOB  Pin 0         */
            adcInit();

            /* start adc conversion */
            adcStartConversion(adcREG1,adcGROUP1);

            while(1) /* ... continue forever */
            {
                /* trigger using gio port b, pin 0  */
                gioSetBit(gioPORTB, 0, 1);

                /* ... wait and read the conversion count */
                while((adcIsConversionComplete(adcREG1,adcGROUP1))==0);
                ch_count = adcGetData(adcREG1, adcGROUP1,&adc_data[0]);

                ch_count = ch_count;
                /* conversion results :                                       */
                /* adc_data[0] -> should have conversions for Group1 channel1 */
                /* adc_data[1] -> should have conversions for Group1 channel2 */

                id    = adc_data[0].id;
                value = adc_data[0].value;

                gioSetBit(gioPORTB, 0, 0);

                sciDisplayText(sciREG1,&TEXT1[0],TSIZE1);   /* send text 1 */
                sciDisplayData(sciREG1,(uint8*)&id,4);    /* send data 1 */
                sciDisplayText(sciREG1,&TEXT2[0],TSIZE2);   /* send text 2 */
                sciDisplayData(sciREG1,(uint8*)&value,4); /* send data 2 */

                id    = adc_data[1].id;
                value = adc_data[1].value;

                sciDisplayText(sciREG1,&TEXT1[0],TSIZE1);   /* send text 1 */
                sciDisplayData(sciREG1,(uint8*)&id,4);    /* send data 1 */
                sciDisplayText(sciREG1,&TEXT2[0],TSIZE2);   /* send text 2 */
                sciDisplayData(sciREG1,(uint8*)&value,4); /* send data 2 */

                wait(0xFFFFF);
            };

    /* USER CODE END */
    }

    /* USER CODE BEGIN (4) */
    void sciDisplayData(sciBASE_t *sci, uint8 *text,uint32 length)
    {
        uint8 txt = 0;
        uint8 txt1 = 0;

    #if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))
    text = text + (length -1);
    #endif

        while(length--)
        {
    #if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))
            txt = *text--;
    #else
            txt = *text++;
    #endif

            txt1 = txt;

            txt  &= ~(0xF0);
            txt1 &= ~(0x0F);
            txt1  =txt1>>4;

            if(txt<=0x9)
            {
                txt +=0x30;
            }
            else if(txt > 0x9 && txt < 0xF)
            {
                txt +=0x37;
            }
            else
            {
                txt = 0x30;
            }

            if(txt1 <= 0x9)
            {
                txt1 +=0x30;
            }
            else if((txt1 > 0x9) && (txt1 <= 0xF))
            {
                txt1 +=0x37;
            }
            else
            {
                txt1 = 0x30;
            }

            while ((sciREG1->FLR & 0x4) == 4); /* wait until busy */
            sciSendByte(sciREG1,txt1);      /* send out text   */
            while ((sciREG1->FLR & 0x4) == 4); /* wait until busy */
            sciSendByte(sciREG1,txt);      /* send out text   */
        };
    }

    void sciDisplayText(sciBASE_t *sci, uint8 *text,uint32 length)
    {
        while(length--)
        {
            while ((sciREG1->FLR & 0x4) == 4); /* wait until busy */
            sciSendByte(sciREG1,*text++);      /* send out text   */
        };
    }

    void wait(uint32 time)
    {
        while(time){time--;};
    }
    /* USER CODE END */

  • 你的两行错误信息显示在你的程序里面有不能识别的字符。

    你可以把你 的错误信息都贴出来看看,它会告诉你具体是哪个不能识别的。

    谢谢

  • 这个问题比较简单,可能是头文件没有包含进来,如果包含进来了,看看软件配置,是不是把那个文件包含进来了,如果编译器找不到路径,就会出现这种情况,某个变量是在某个头文件里的。建议把所有的相关头文件放到项目文件里。

  • 肯定不是您说的这个原因。。我怀疑是操作系统问题,因为我在XP机子里就出现这个问题,在win7系统运行同样的程序同样的配置同样的操作就能顺利编译

    不过也没事了,我在第三台电脑调试成功了(一把泪,这板子和软件太娇贵了,下个程序要半年)

    顺便说下,HAL例程里的adc_example,自动生成的start什么什么.c文件有bug,第79行需要注释掉end if才能编译通过。

  • 板子的调试器比较慢哈,XP的操作系统用的比较少,公司默认都是用Win7的环境。

    谢谢