Пример #1
0
void startRecordUART(void) {
  if (PKT_NONE!=uartMode[0]) {
    if(baud[0]<0) autobaud(0);
    if(baud[0]>0) setup_uart(0,baud[0],1);
  }
  if (PKT_NONE!=uartMode[1]) {
    if(baud[1]<0) autobaud(1);
    if(baud[1]>0) setup_uart(1,baud[1],1);
  }
}
Пример #2
0
void setup(void) 
{
    /*
      start all UARTs at 57600 with default buffer sizes
     */
    setup_uart(hal.uartA, "uartA"); // console
    setup_uart(hal.uartB, "uartB"); // 1st GPS
    setup_uart(hal.uartC, "uartC"); // telemetry 1
    setup_uart(hal.uartD, "uartD"); // telemetry 2
    setup_uart(hal.uartE, "uartE"); // 2nd GPS
}
Пример #3
0
/*
 * Routine: uart_init
 * Description: init the UART clocks, muxes, and baudrate/parity/etc.
 */
void uart_init(void)
{
	struct uart_ctlr *uart = (struct uart_ctlr *)NV_PA_APB_UARTD_BASE;
#if defined(CONFIG_TEGRA2_ENABLE_UARTD)
	setup_uart(uart);
#endif	/* CONFIG_TEGRA2_ENABLE_UARTD */
#if defined(CONFIG_TEGRA2_ENABLE_UARTA)
	uart = (struct uart_ctlr *)NV_PA_APB_UARTA_BASE;

	setup_uart(uart);
#endif	/* CONFIG_TEGRA2_ENABLE_UARTA */
}
Пример #4
0
void setup()
{
    hal.console->println("Practice sketch starting up...");
    hal.scheduler->delay(1000);

    /*
      Start all UARTs at 57600 with default buffer sizes
     */
    setup_uart(hal.uartA, "uartA"); // console
    setup_uart(hal.uartB, "uartB"); // 1st GPS
    setup_uart(hal.uartC, "uartC"); // telemetry 1
    setup_uart(hal.uartD, "uartD"); // telemetry 2
    setup_uart(hal.uartE, "uartE"); // 2nd GPS
    
    timer = hal.scheduler->micros();
}
Пример #5
0
void setup() {
    TMOD = 0b0001       // timer 0 mode 1 16-bit timer
        | (0b0010 << 4); // timer 1 mode 2  8-bit auto reload
    setup_uart();
    setup_timing();
    EA = 1; // Open master interrupt switch
}
Пример #6
0
void main(void)
{
  /* Init watchdog timer to off */
   WDTCTL = WDTPW|WDTHOLD;

   // Setup oscillator for 16MHz operation
   BCSCTL1 = CALBC1_16MHZ;
   DCOCTL = CALDCO_16MHZ;

   // Wait for changes to take effect
   __delay_cycles(4000);

   // Set LED output to pin 1.0
   P1DIR |= BIT0;

   // Make sure a function processes bytes received through UART
   setup_uart_callback(uart_rx_callback);

   // Setup CC2500 radio and register callback to process incoming packets
   setup_cc2500(cc2500_rx_callback);

   setup_uart();

   // Setup LED outputs
   LED_PxOUT &= ~(LED1); //Outputs
   LED_PxDIR = LED1; //Outputs


   for(;;)
   {
     __bis_SR_register( LPM1_bits + GIE );   // Enable interrupts and sleep

   }

}
Пример #7
0
//Returns positive if it looks like this is a good baud
//Returns negative otherwise
//Good baud has at least 20 characters in a second
//and less than 1/100 of characters have an error
static int countCharBaud(int port, int trybaud, unsigned int* chars, unsigned int* errors) {
  *chars=0;
  *errors=0;
  setup_uart(port,trybaud,0);
  
  unsigned int start=T0TC;
  while((T0TC-start)<PCLK) {
    int status=ULSR(port);
    if(status & 0x01) {
      char junk=URBR(port);
      (*chars)++;
      if(status & 0x80) (*errors)++;
    }
  }
  int result;
  if (*chars<20) {
    result=-1;
  } else if (*errors>(*chars/100)) {
    result=-2;
  } else {
    result=1;
  }
  fillPktStart(&uartbuf[port],PT_BAUD);
  fillPktByte(&uartbuf[port],port);
  fillPktInt(&uartbuf[port],trybaud);
  fillPktInt(&uartbuf[port],*chars);
  fillPktInt(&uartbuf[port],*errors);
  fillPktInt(&uartbuf[port],result);
  fillPktFinish(&uartbuf[port]);
  return result;
}
Пример #8
0
int main( void )
{
	stop_watchdog();
	setup_finish_ports();
	setup_clock();
	setup_uart();
	rf_init(sizeof(struct packet));
	configure_timer_38k();
	timer_38k_enable(1);
	configure_watchdog();

	__enable_interrupt();

	// Show battery voltage on start
	display_vcc();

	// Setup RF channel
	setup_channel();

	set_state(st_stopped);

	// Start/stop loop
	for (;;) {
		wait_start();
		set_state(st_started);
		beep(SHORT_DELAY_TICKS);
		detect_finish();
		set_state(st_stopped);
		report_finish();
	}
}
Пример #9
0
ENTRY_FUNCTION(start_zii_imx7d_rpu2, r0, r1, r2)
{
	imx7_cpu_lowlevel_init();

	if (IS_ENABLED(CONFIG_DEBUG_LL))
		setup_uart();

	imx7d_barebox_entry(__dtb_imx7d_zii_rpu2_start + get_runtime_offset());
}
Пример #10
0
static void __noreturn start_imx53_tqma53_common(void *fdt)
{
	if (IS_ENABLED(CONFIG_DEBUG_LL)) {
		writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x278);
		writel(0x3, MX53_IOMUXC_BASE_ADDR + 0x27c);
		setup_uart((void *)MX53_UART2_BASE_ADDR);
		putc_ll('>');
	}

	imx53_barebox_entry(fdt);
}
Пример #11
0
void setup(){
    setup_clock();
    enable_interrupts();
    enable_timer0();
    setup_pulse_in();
    setup_pulse_out();
    setup_uart();
    #ifdef DEBUG
    run_tests();
    #endif
}
Пример #12
0
ENTRY_FUNCTION(start_imx6sx_udoo_neo, r0, r1, r2)
{
	void *fdt;

	imx6_cpu_lowlevel_init();

	if (IS_ENABLED(CONFIG_DEBUG_LL))
		setup_uart();

	fdt = __dtb_imx6sx_udoo_neo_full_start + get_runtime_offset();

	imx6sx_barebox_entry(fdt);
}
Пример #13
0
ENTRY_FUNCTION(start_imx6sx_sabresdb, r0, r1, r2)
{
	void *fdt;

	imx6_cpu_lowlevel_init();

	if (IS_ENABLED(CONFIG_DEBUG_LL))
		setup_uart();

	fdt = __dtb_imx6sx_sdb_start + get_runtime_offset();

	barebox_arm_entry(0x80000000, SZ_1G, fdt);
}
Пример #14
0
ENTRY_FUNCTION(start_variscite_custom, r0, r1, r2)
{
	void *fdt;

	imx6_cpu_lowlevel_init();

	arm_setup_stack(0x00920000 - 8);

	if (IS_ENABLED(CONFIG_DEBUG_LL))
	    setup_uart();

	fdt = __dtb_imx6q_var_custom_start + get_runtime_offset();

	barebox_arm_entry(0x10000000, SZ_1G, fdt);
}
Пример #15
0
ENTRY_FUNCTION(start_phytec_pbab01_2gib, r0, r1, r2)
{
	uint32_t fdt;

	arm_cpu_lowlevel_init();

	arm_setup_stack(0x00920000 - 8);

	if (IS_ENABLED(CONFIG_DEBUG_LL))
		setup_uart();

	fdt = (uint32_t)__dtb_imx6q_phytec_pbab01_start - get_runtime_offset();

	barebox_arm_entry(0x10000000, SZ_2G, fdt);
}
Пример #16
0
static void __noreturn start_imx6q_phytec_pbaa03_common(uint32_t size)
{
	void *fdt;

	arm_cpu_lowlevel_init();

	arm_setup_stack(0x00920000 - 8);

	if (IS_ENABLED(CONFIG_DEBUG_LL))
		setup_uart();

	fdt = __dtb_imx6q_phytec_pbaa03_start - get_runtime_offset();

	barebox_arm_entry(0x10000000, size, fdt);
}
Пример #17
0
int main( void )
{
  uint8_t buffer_index;
  packet_header_t* header;

  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  header = (packet_header_t*)tx_buffer;
  
  // Initialize Tx Buffer
  header->length = sizeof(packet_header_t) - 1;
  header->source = DEVICE_ADDRESS;
  header->type = 0x66; // Sync message
  header->flags = 0xAA;
  
  // Make sure processor is running at 12MHz
  setup_oscillator();
  
  // Initialize UART for communications at 115200baud
  setup_uart();
   
  // Initialize LEDs
  setup_leds();
  
  // Initialize timer
  set_ccr( 0, TIMER_LIMIT );
  setup_timer_a(MODE_UP);
  
  // Send sync message
  register_timer_callback( send_sync_message, 0 );

  // Initialize radio and enable receive callback function
  setup_radio( process_rx );
  
  // Enable interrupts, otherwise nothing will work
  eint();
   
  while (1)
  {
    // Enter sleep mode
    __bis_SR_register( LPM0_bits + GIE );
    __no_operation();
        
  }
  
  return 0;
}
Пример #18
0
static void __noreturn start_imx6_phytec_common(uint32_t size,
						bool do_early_uart_config,
						void *fdt_blob_fixed_offset)
{
	void *fdt;

	imx6_cpu_lowlevel_init();

	arm_setup_stack(0x00920000 - 8);

	if (do_early_uart_config && IS_ENABLED(CONFIG_DEBUG_LL))
		setup_uart();

	fdt = fdt_blob_fixed_offset - get_runtime_offset();
	barebox_arm_entry(0x10000000, size, fdt);
}
Пример #19
0
int main(void)
{
	// Stop Watchdog timer
	WDTCTL = WDTPW + WDTHOLD;

	// Configure CPU clock
	caliberate_clock();
	
	// setup uart
	setup_uart();

	setup_delay();

	// Enter LPM0 w/ interrupt
	_BIS_SR(LPM0_bits + GIE);                   
}
Пример #20
0
int main(int argc, char const *argv[]) {

    unsigned destination = 0;
    unsigned flit_number = 0;
    unsigned flit;
    unsigned packet_counter = 0;

    setup_uart(CPU_SPEED, UART_BAUDRATE);
    uart_puts("UART TEST: If you can read this, then UART output works!\n");

    while(1){
        if ((ni_read_flags() & NI_READ_MASK) == 0)
        {
            flit = ni_read();
        }else if((ni_read_flags() & NI_WRITE_MASK) == 0 && packet_counter < 100)
        {
            flit_number ++;
            if (flit_number == 1){
                ni_write(build_header(destination, 3));
                destination ++;
                if (destination == MY_ADDR){
                    destination ++;
                }
                if (destination == 4){
                    destination = 0;
                }
            }else if (flit_number == 3){
                ni_write(0);
                flit_number = 0;
                packet_counter ++;
            }else{
                ni_write(0b1111111111111111111111111111);
            }
        }
        if (packet_counter >= 100){
            while ((ni_read_flags() & NI_READ_MASK) == 0){
                flit = ni_read();
            }
            uart_puts("finished sending packets!\n");
            break;
        }
    }

    /* Run CPU test */
    test_plasma_funcitons();
    return 0;
}
Пример #21
0
static void wandboard_init(void)
{
	unsigned long sdram_size;

	setup_uart();

	if (get_pc() > 0x10000000)
		return;

	sdram_size = wandboard_dram_init();

	pr_debug("SDRAM init finished. SDRAM size 0x%08lx\n", sdram_size);

	imx6_esdhc_start_image(2);
	pr_info("Loading image from SPI flash\n");
	imx6_spi_start_image(0);
}
Пример #22
0
ENTRY_FUNCTION(start_zii_vf610_dev, r0, r1, r2)
{
	void *fdt;
	const unsigned int system_type = get_system_type();

	vf610_cpu_lowlevel_init();

	if (IS_ENABLED(CONFIG_DEBUG_LL))
		setup_uart();

	switch (system_type) {
	default:
		if (IS_ENABLED(CONFIG_DEBUG_LL)) {
			relocate_to_current_adr();
			setup_c();
			puts_ll("\n*********************************\n");
			puts_ll("* Unknown system type: ");
			puthex_ll(system_type);
			puts_ll("\n* Assuming devboard revision B\n");
			puts_ll("*********************************\n");
		}
	case ZII_PLATFORM_VF610_DEV_REV_B: /* FALLTHROUGH */
		fdt = __dtb_vf610_zii_dev_rev_b_start;
		break;
	case ZII_PLATFORM_VF610_SCU4_AIB:
		fdt = __dtb_vf610_zii_scu4_aib_start;
		break;
	case ZII_PLATFORM_VF610_DEV_REV_C:
		fdt = __dtb_vf610_zii_dev_rev_c_start;
		break;
	case ZII_PLATFORM_VF610_CFU1:
		fdt = __dtb_vf610_zii_cfu1_start;
		break;
	case ZII_PLATFORM_VF610_SSMB_SPU3:
		fdt = __dtb_vf610_zii_ssmb_spu3_start;
		break;
	case ZII_PLATFORM_VF610_SPB4:
		fdt = __dtb_vf610_zii_spb4_start;
		break;
	case ZII_PLATFORM_VF610_SSMB_DTU:
		fdt = __dtb_vf610_zii_ssmb_dtu_start;
		break;
	}

	vf610_barebox_entry(fdt + get_runtime_offset());
}
Пример #23
0
ENTRY_FUNCTION(start_imx6q_guf_santaro, r0, r1, r2)
{
    uint32_t fdt;
    int i;

    arm_cpu_lowlevel_init();

    arm_setup_stack(0x00920000 - 8);

    for (i = 0x68; i <= 0x80; i += 4)
        writel(0xffffffff, MX6_CCM_BASE_ADDR + i);

    setup_uart();

    fdt = (uint32_t)__dtb_imx6q_guf_santaro_start - get_runtime_offset();

    barebox_arm_entry(0x10000000, SZ_1G, fdt);
}
Пример #24
0
int main(void)
{
	// Stop WDT
	WDTCTL = WDTPW + WDTHOLD;                 

	//Configure CPU clock
	caliberate_clock();

	setup_delay();

	//RED Led, set as output port
	P1DIR |= BIT0;
	setup_uart();

	setup_switch();

	// Enter LPM0 w/ interrupt
	_BIS_SR(LPM0_bits + GIE);
}
Пример #25
0
int main() {
    int fd = setup_uart();
    if (fd == -1) {
        return 1;
    }

    //----- TX BYTES -----
    //unsigned char tx_buffer[NMEA_MAX];
    //memset(tx_buffer, 0, NMEA_MAX);

    //const char* data = "$JKMSG,*\r\n";
    //memcpy(tx_buffer, data, sizeof(data));
    
    //int count = write(fd, tx_buffer, sizeof(data));
    //if (count < 0) {
    //    printf("UART TX error\n");
    //}

    for (;;) {
        //----- CHECK FOR ANY RX BYTES -----
        // Read up to 255 characters from the port if they are there
        unsigned char rx_buffer[NMEA_MAX];
        int rx_length = read(fd, rx_buffer, NMEA_MAX);
        if (rx_length < 0) {
            //An error occured (will occur if there are no bytes)
        } else if (rx_length == 0) {
            //No data waiting
        } else {
            //Bytes received
            rx_buffer[rx_length] = '\0';
            puts(rx_buffer);
            //printf("%i bytes read : %s\n", rx_length, rx_buffer);
        }
    }
    

    //----- CLOSE THE UART -----
    close(fd);

    return 0;
}
Пример #26
0
int board_init(void)
{
/*
 * need set Power Supply Glitch to 0x41736166
 * and need clear Power supply Glitch Detect bit
 * when POR or reboot or power on Otherwise system
 * could not be power off anymore;
 * need to set SNVS work at DUMP mode;
 * */
	u32 reg;
	writel(0x41736166, SNVS_BASE_ADDR + 0x64);/*set LPPGDR*/
	udelay(10);
	reg = readl(SNVS_BASE_ADDR + 0x4c);
	reg |= (1 << 3);
	writel(reg, SNVS_BASE_ADDR + 0x4c);/*clear LPSR*/

	mxc_iomux_v3_init((void *)IOMUXC_BASE_ADDR);
	setup_boot_device();
	fsl_set_system_rev();

	/* board id for linux */
	gd->bd->bi_arch_number = MACH_TYPE_MX6SL_EVK;

	/* address of boot parameters */
	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;

	wdog_preconfig(WDOG1_BASE_ADDR);

	setup_uart();

#ifdef CONFIG_MXC_FEC
	setup_fec();
#endif

#ifdef CONFIG_MXC_EPDC
	setup_epdc();
#endif
	return 0;
}
Пример #27
0
ENTRY_FUNCTION(start_imx6dl_mba6x)(void)
{
	uint32_t fdt;

	__barebox_arm_head();

	arm_cpu_lowlevel_init();

	arm_setup_stack(0x00920000 - 8);

	if (IS_ENABLED(CONFIG_DEBUG_LL)) {
		writel(0x2, 0x020e035c);
		setup_uart();
		putc_ll('a');
	}

	arm_early_mmu_cache_invalidate();

	fdt = (uint32_t)__dtb_imx6dl_mba6x_start - get_runtime_offset();

	barebox_arm_entry(0x10000000, SZ_512M, fdt);
}
Пример #28
0
//---------------------------------------------------------------------------------------------
void uart_task_handler(void *args)
{
    int len = 0;
    uint8_t cache[0x100];
    struct UartPort *port = (struct UartPort*)args;

    setup_uart(port);

    for (;;)
    {
        if (xSemaphoreTake(port->sem, portMAX_DELAY) == pdPASS)
        {
            while (xQueueReceive(port->cache_rx.queue, &cache[len++], 0) == pdPASS); 
            
            if (port->uart_frame_hook) 
            {
                port->uart_frame_hook(cache, len);
                len = 0;
            }
        }
    }
}
Пример #29
0
int board_early_init_f(void)
{


	init_drive_strength();

	/* Setup debug led */
	gpio_direction_output(6, 0);
	mxc_request_iomux(MX51_PIN_GPIO1_6, IOMUX_CONFIG_ALT0);
	mxc_iomux_set_pad(MX51_PIN_GPIO1_6, PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST);

	/* wait a little while to give the pll time to settle */
	sdelay(100000);

	setup_weim();
	setup_uart();
	setup_fec();
	setup_gpios();

	spi_io_init();

	return 0;
}
Пример #30
0
int main (void)
{
	

	int dummy;
	//int matrix; //only for test of ledmdrv
	int i;
	//int temp_current_val; //temporary
	//int first_ec=1;
	//Setup oscillator/ports/pins first
	setup_oscillator();
	setup_ports();
	setup_peripheral_pin_select();
	setup_interrupt_priorities();

#ifdef USE_DIO
	setup_dio();
#endif

#ifdef USE_CONTROL
	setup_control();
#endif

#ifdef USE_ADC_SPI
	setup_adc_spi();
#endif

#ifdef USE_ADC
	setup_adc();
        initDma0();					// Initialise the DMA controller to buffer ADC data in conversion order
#endif
#ifdef USE_TIMER3
	//setup_timer3();
#endif

#ifdef USE_UART
	setup_uart();
#endif

        ecat_isr_running = 0;

#ifdef USE_ETHERCAT
	while (!eeprom_loaded())		//Wait until ESC is ready
		//ToggleHeartbeatLED();				//Success
		SetHeartbeatLED;
//#ifdef ECAT_DMA
        cfgDma0SpiTx();
	cfgDma1SpiRx();
//#endif

	setup_ethercat();
	ClrHeartbeatLED;
#endif


#if defined PWR_0_2 || defined PWR_0_3 || defined PWR_0_4 || defined PWR_0_5
	ClrEnableMotor;
#endif

setup_interrupt_priorities();

dummy = U1RXREG;

	while(1){

		if (i++%20001==0)
		{
			//ToggleHeartbeatLED();
		}
#if defined USE_ETHERCAT
                if (!IEC0bits.DMA1IE)
                {
                    DISABLE_AL_EVENT_INT;
                    step_ethercat();
                    ENABLE_AL_EVENT_INT;

                }
#endif

	} 
}