Exemplo n.º 1
0
void HardwareBaremetal::SetLed(THardwareLedStatus tLedStatus) {
	if (tLedStatus == HARDWARE_LED_OFF) {
		hardware_led_set(0);
	} else {
		hardware_led_set(1);
	}
}
Exemplo n.º 2
0
bool HardwareBaremetal::Reboot(void) {
	hardware_led_set(1);

	h3_watchdog_enable();

	invalidate_instruction_cache();
	flush_branch_target_cache();
	flush_prefetch_buffer();
	clean_data_cache();
	invalidate_data_cache();

	for (;;)
		;

	__builtin_unreachable ();

	return true;
}
Exemplo n.º 3
0
/**
 * @ingroup hal
 *
 */
void hardware_init(void) {
#if defined ( RPI2 ) || defined ( RPI3 )
#ifndef ARM_ALLOW_MULTI_CORE
	// put all secondary cores to sleep
	uint8_t core_number = 1;
	for (core_number = 1 ; core_number < 4; core_number ++) {
		*(uint32_t *) (SMP_CORE_BASE + (core_number * 0x10)) = (uint32_t) _init_core;
	}
#endif
#endif
	(void) console_init();

	hardware_init_startup_micros = bcm2835_st_read();

	sys_time_init();

	bcm2835_rng_init();

	(void) bcm2835_vc_set_power_state(BCM2835_VC_POWER_ID_SDCARD, BCM2835_VC_SET_POWER_STATE_ON_WAIT);

#if (_FFCONF == 82786)	/* R0.09b */
	(void) f_mount((BYTE) 0, &fat_fs);
#elif (_FFCONF == 32020)/* R0.11 */
	(void) f_mount(&fat_fs, (const TCHAR *) "", (BYTE) 1);
#else
#error Not a recognized/tested FatFs version
#endif

	const uint32_t board_revision = bcm2835_vc_get_get_board_revision();

	if ((board_revision == 0xa02082) || (board_revision == 0xa22082)) {
		_hardware_led_f.init = bcm2837_gpio_virt_init;
		_hardware_led_f.set = bcm2837_gpio_virt_led_set;
	} else if (board_revision > 0x00000f) {
		_hardware_led_f.init = led_rpiplus_init;
		_hardware_led_f.set = led_rpiplus_set;
	}

	hardware_led_init();
	hardware_led_set(1);
}