История изменений
Исправление 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]
Наверно какие-то либы не перечислены в команде сборки. Пока не понял какие надо добавить.