LINUX.ORG.RU

История изменений

Исправление Xintrea, (текущая версия) :

Решил поэкспериментировать с UART

Стандартный бинарник, который уже скомпилирован кем-то, нормально залился в плату и стал отправлять байты. Его исходник такой:

//Uart test
#include <HDL51001_ccf.h>
#include <uart.h>


void pause(unsigned int a)
{
  unsigned int i;
  for(i=a;i>0;i--);
}

void main()
{
    UART_InitTypeDef UART_InitStructure;
    
    
    
      UART_InitStructure.BaudRate = 38400; //set baudrate
      UART_InitStructure.TypeParity = 0x00000000; //parity control type
      UART_InitStructure.Parity = 0x00000000; //enable parity control
      UART_InitStructure.FlowControl = 0x00000000; //enable cts/rts
      UART_InitStructure.Mode = 0x00000003; //rx enable - 1 bit, tx enable - 2 bit (rx + tx en)
    
        GPIOB->BPS = 0x00000300;         //alternative port function for uart0
        uart_init(UART0, &UART_InitStructure);
        DM2UART(UART0, 0x00000000, 0x00000800);
    GPIOB->DIR = ((uint32_t)0x60000000);
      GPIOB->OUT = ((uint32_t)0x60000000);
        pause(10000);
        UART_SEND_BYTE(0xAB, UART0);
        
}

Однако самостоятельно закомпилировать исходник этой программы не получилось:

$ cat ./compile.sh

mc-lcc -v -target=mcp -Wp-I/usr/local/include/Multiclet/MCp0411100101/ -Wa--arch=MCp0411100101 -Wl-L/usr/local/lib/Multiclet/MCp0411100101/ -Wl-lmath -Wl-M -o example_uart_02.bin /usr/local/lib/Multiclet/MCp0411100101/crt0.o example_uart_02.c

$ ./compile.sh
mc-lcc $Id$
/usr/local/bin/mc-mcpp -I- -D__LCC__ -I/usr/local/include/Multiclet/MCp0411100101/ -I-lccdir=/usr/local/bin/include example_uart_02.c /tmp/lcc170040.i
/home/xintrea/example_uart_02.c:1: warning: Converted [CR+LF] to [LF]
    //Uart test
/usr/local/bin/mc-rcc -target=mcp -v -target=mcp /tmp/lcc170040.i /tmp/lcc170041.s
/usr/local/bin/mc-rcc $Name$($Id$)
/usr/local/bin/mc-as --arch=MCp0411100101 -o/tmp/lcc170042.o /tmp/lcc170041.s
/usr/local/bin/mc-ld -L/usr/local/lib/Multiclet/MCp0411100101/ -lmath -M -oimage_uart_02.bin /usr/local/lib/Multiclet/MCp0411100101/crt0.o /tmp/lcc170042.o
/tmp/lcc170042.o:(.text+0x1b8): undefined reference to 'uart_init'
/tmp/lcc170042.o:(.text+0x240): undefined reference to 'DM2UART'
rm /tmp/lcc170042.o /tmp/lcc170040.i /tmp/lcc170041.s

Наверно какие-то либы не перечислены в команде сборки. Пока не понял какие надо добавить и в каких опциях.

Исходная версия Xintrea, :

Решил поэкспериментировать с UART

Стандартный бинарник, который уже скомпилирован кем-то, нормально залился в плату и стал отправлять байты. Его исходник такой:

[code]
//Uart test
#include <HDL51001_ccf.h>
#include <uart.h>

void pause(unsigned int a)
{
unsigned int i;
for(i=a;i>0;i--);
}

void main()
{
UART_InitTypeDef UART_InitStructure;



UART_InitStructure.BaudRate = 38400; //set baudrate
UART_InitStructure.TypeParity = 0x00000000; //parity control type
UART_InitStructure.Parity = 0x00000000; //enable parity control
UART_InitStructure.FlowControl = 0x00000000; //enable cts/rts
UART_InitStructure.Mode = 0x00000003; //rx enable - 1 bit, tx enable - 2 bit (rx + tx en)

GPIOB->BPS = 0x00000300; //alternative port function for uart0
uart_init(UART0, &UART_InitStructure);
DM2UART(UART0, 0x00000000, 0x00000800);
GPIOB->DIR = ((uint32_t)0x60000000);
GPIOB->OUT = ((uint32_t)0x60000000);
pause(10000);
UART_SEND_BYTE(0xAB, UART0);

}
[/code]

Однако самостоятельно закомпилировать исходник этой программы не получилось:

[code]
$ cat ./compile.sh

mc-lcc -v -target=mcp -Wp-I/usr/local/include/Multiclet/MCp0411100101/ -Wa--arch=MCp0411100101 -Wl-L/usr/local/lib/Multiclet/MCp0411100101/ -Wl-lmath -Wl-M -o example_uart_02.bin /usr/local/lib/Multiclet/MCp0411100101/crt0.o example_uart_02.c

$ ./compile.sh
mc-lcc $Id$
/usr/local/bin/mc-mcpp -I- -D__LCC__ -I/usr/local/include/Multiclet/MCp0411100101/ -I-lccdir=/usr/local/bin/include example_uart_02.c /tmp/lcc170040.i
/home/xintrea/example_uart_02.c:1: warning: Converted [CR+LF] to [LF]
//Uart test
/usr/local/bin/mc-rcc -target=mcp -v -target=mcp /tmp/lcc170040.i /tmp/lcc170041.s
/usr/local/bin/mc-rcc $Name$($Id$)
/usr/local/bin/mc-as --arch=MCp0411100101 -o/tmp/lcc170042.o /tmp/lcc170041.s
/usr/local/bin/mc-ld -L/usr/local/lib/Multiclet/MCp0411100101/ -lmath -M -oimage_uart_02.bin /usr/local/lib/Multiclet/MCp0411100101/crt0.o /tmp/lcc170042.o
/tmp/lcc170042.o:(.text+0x1b8): undefined reference to 'uart_init'
/tmp/lcc170042.o:(.text+0x240): undefined reference to 'DM2UART'
rm /tmp/lcc170042.o /tmp/lcc170040.i /tmp/lcc170041.s
[/code]

Наверно какие-то либы не перечислены в команде сборки. Пока не понял какие надо добавить.