void hal_init () { // configure radio I/O and interrupt handler hal_io_init(); // configure radio SPI hal_spi_init(); // configure timer and interrupt handler hal_time_init(); }
void hal_init () { // configure radio I/O and interrupt handler hal_io_init(); // configure radio SPI hal_spi_init(); // configure timer and interrupt handler hal_time_init(); #if defined(LMIC_PRINTF_TO) // printf support hal_printf_init(); #endif }
void __init __noreturn hal_main() { /* 开辟鸿蒙,谁为情种?最初的一切*/ km_cluster_init(); build_ram_list(); /* Go back to ARCH, we have inited the basic paging allocator */ hal_arch_init(HAL_ARCH_INIT_PHASE_EARLY); /* KERNEL */ kc_init(); kp_init(); ks_init(); hal_malloc_init(); hal_dpc_init(); hal_time_init(); hal_arch_init(HAL_ARCH_INIT_PHASE_MIDDLE); hal_console_init(); printk("GridOS 启动中...\n"); ke_module_entry(); local_irq_enable(); /* Driver pakcage loading, and it must be the last file */ hal_boot_module_loop(start_driver_ctx); if (last_package_id == driver_package_id && driver_pakcage) { ke_startup_driver_process(driver_pakcage, driver_size); } else { if (driver_size) printk("Driver package is not the last one, BSS in it may overlay the useful file data after it..."); else printk("No driver package was loaded..."); } printk("Hal startup ok.\n"); kernel_test(); while (1) { kt_schedule_driver(); /* If have no process, sleep */ if (!kt_schedule_running_count()) dumy_idle_ops(0); else kt_schedule(); } }