//---------------------------------------------------------------------------------------------------------------------------------- // FUNCTION: hw_init() // // DESCRIPTION // Initializes the MCF52259 hardware peripherals. //---------------------------------------------------------------------------------------------------------------------------------- static void hw_init() { int_inhibit_all(); oct_nunchuk_init(i2c_mod_1, dtim_3, pit_timer_1); pit_init(pit_timer_0, pit_freq_1_hz, console_update); int_uninhibit_all(); }
/* * DANG_BEGIN_FUNCTION device_init * * description: * Calls all initialization routines for devices (keyboard, video, serial, * disks, etc.) * * DANG_END_FUNCTION */ void device_init(void) { pit_init(); /* for native speaker */ video_config_init(); /* privileged part of video init */ keyb_priv_init(); mouse_priv_init(); }
void us_ticker_init(void) { if (us_ticker_inited) return; us_ticker_inited = 1; pit_init(); lptmr_init(); }
int main(void) { /* 模块初始化 */ exc_init(); /* 中断初始化 */ light_init(); /* LED灯初始化 */ /* 初始化串口 */ serial_initialize((intptr_t)(NULL)); pit_init(PIT0, BUS_CLK_50000*1000); pit_enable(PIT0); printf("%s\n","PIT test!"); /* 主循环 */ while (1) { //主循环计数到一定的值,使小灯的亮、暗状态切换 if (pit_count > 0) { light_change(LIGHT0);//指示灯的亮、暗状态切换 pit_count = 0; } pit_enable(PIT0); } //end_while }
int arch_early_init() { int rc; rc = x86_serial_init(); if (rc) return rc; rc = textmode_init(); if (rc) return rc; rc = gdt_init(); if (rc) return rc; rc = idt_init(); if (rc) return rc; rc = exceptions_init(); if (rc) return rc; rc = irq_init(); if (rc) return rc; rc = pit_init(); if (rc) return rc; return 0; }
/*********************************************************** *功能: 初始化实现模拟定时器所需的pit定时器,基准定时1ms *形参: * 无 *返回: * 无 */ void InitSimulatTimer(void) { uint32_t cnt; cnt = bus_clk_khz * 1u; pit_init(SimulatTimer_PIT_Tn, cnt); //1ms基准周期定时 }
int main() { log_init(1, "emu86.log"); mem_init(); /* load_rom("../rom/wdbios.rom", 0xc8000, 8192, "a39b2b1c3e298b3599995c353d16c3ad");*/ load_rom("../rom/basicc11.f6", 0xf6000, 8192, "69e2bd1d08c893cbf841607c8749d5bd"); load_rom("../rom/basicc11.f8", 0xf8000, 8192, "5f85ff5ea352c1ec11b084043fbb549e"); load_rom("../rom/basicc11.fa", 0xfa000, 8192, "04a285d5dc8d86c60679e8f3c779dcc4"); load_rom("../rom/basicc11.fc", 0xfc000, 8192, "b086a6980fc5736098269e62b59726ef"); load_rom("../rom/pc081682.bin", 0xfe000, 8192, "1584aeaadebba4bc95783f1fa0fa3db8"); cpu_init(); pit_init(); pic_init(); dma_init(); ppi_init(); fdc_init(); initscr(); cbreak(); noecho(); nodelay(stdscr, TRUE); keypad(stdscr, TRUE); mainloop(); endwin(); return 0; }
/* _____PUBLIC FUNCTIONS_____________________________________________________ */ int main(void) { // Create a timer object tmr_t tmr; // Initialise modules led_init(); pit_init(); // Initialise timer to expire once a second tmr_start(&tmr, TMR_TICKS_PER_SEC); for(;;) { // Wait until timer has expired while(!tmr_has_expired(&tmr)) { ; } // Reset timer tmr_reset(&tmr); // Toggle LED pin led_toggle(); } }
void tmr_test(void) { // Create a timer object tmr_t tmr; // Initialise PIO BIT_SET_HI(PORT_LED_O, BIT_LED_O); BIT_SET_HI(DDR_LED_O, BIT_LED_O); // Initialise module pit_init(); // Enable global interrupts sei(); // Start timer with a 1s timeout tmr_start(&tmr, TMR_MS_TO_TICKS(1000)); for(;;) { // Wait until timer has expired while(!tmr_has_expired(&tmr)) { ; } // Restart timer tmr_restart(&tmr); // Toggle LED LED_TOGGLE(); } }
void arch_entry() { paging_init(); gdt_init(); idt_init(); isr_init(); pic_init(); pit_init(); }
void pc_basic_device_init(qemu_irq *isa_irq, FDCtrl **floppy_controller, ISADevice **rtc_state) { int i; DriveInfo *fd[MAX_FD]; PITState *pit; qemu_irq rtc_irq = NULL; qemu_irq *a20_line; ISADevice *i8042; qemu_irq *cpu_exit_irq; register_ioport_write(0x80, 1, 1, ioport80_write, NULL); register_ioport_write(0xf0, 1, 1, ioportF0_write, NULL); if (!no_hpet) { DeviceState *hpet = sysbus_create_simple("hpet", HPET_BASE, NULL); for (i = 0; i < 24; i++) { sysbus_connect_irq(sysbus_from_qdev(hpet), i, isa_irq[i]); } rtc_irq = qdev_get_gpio_in(hpet, 0); } *rtc_state = rtc_init(2000, rtc_irq); qemu_register_boot_set(pc_boot_set, *rtc_state); pit = pit_init(0x40, isa_reserve_irq(0)); pcspk_init(pit); for(i = 0; i < MAX_SERIAL_PORTS; i++) { if (serial_hds[i]) { serial_isa_init(i, serial_hds[i]); } } for(i = 0; i < MAX_PARALLEL_PORTS; i++) { if (parallel_hds[i]) { parallel_init(i, parallel_hds[i]); } } a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 1); i8042 = isa_create_simple("i8042"); i8042_setup_a20_line(i8042, a20_line); vmmouse_init(i8042); cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1); DMA_init(0, cpu_exit_irq); for(i = 0; i < MAX_FD; i++) { fd[i] = drive_get(IF_FLOPPY, 0, i); } *floppy_controller = fdctrl_init_isa(fd); }
void main (void) { //初始化PIT pit_init(); while(1) { } }
/* Initialize the system timer * Parameters: * frequency - desired frequency * * Returns: * void */ void timer_init(uint32_t frequency) { pit_init(frequency); // Set up our timer callback on IRQ0 and unmask the interrupt int_register_irq_handler(IRQ_PIT, timer_callback); int_unmask_irq(IRQ_PIT); printf("[timer] initialized system timer to %d Hz\n", frequency); }
void common_init() { dma_init(); fdc_add(); lpt_init(); pic_init(); pit_init(); serial1_init(0x3f8, 4); serial2_init(0x2f8, 3); }
/** PC platform initialization. */ __init_text void platform_init(void) { pic_init(); acpi_init(); /* If the LAPIC is not available, we must use the PIT as the timer. */ if(!lapic_enabled()) pit_init(); i8042_init(); }
/// Called from our bootstub /// \param mbd Virtual address of Grub multiboot info structure (*? bytes) /// \param magic Grub boot signature (0x1BADB002) (4 bytes) void arch_init(multiboot_info_t* mbd, unsigned int magic) { // Create the kernel info build string sprintf(kinfo.buildstring, "EOS (Built %s %s using GNU C version %s)", __DATE__, __TIME__, __VERSION__); // Low level hardware setup of the interrupt controller and system timer pic_init(); pit_init(100); asm ("sti"); // Clear screen tty_clear(); // Parse the command line kernel_parse_cmdline((char *)PHYS_VIRT(mbd->cmdline)); // Now safe to print to the kernel log printf("%s\n", kinfo.buildstring); kprintf(1, "arch_init(mbd: %08X, magic: %08X)\n", mbd, magic); // Read CPU information cpu_init(); // Read placement information kinfo.start = &_ld_kernel_start; kinfo.end = &_ld_kernel_end; kinfo.memory = mbd->mem_upper; // Read kernel elf headers elf_init_kernel(&mbd->u.elf_sec); // Read module information if (mbd->mods_count > 0) { kprintf(2, "found %d modules\n", mbd->mods_count); // Read multiboot module information multiboot_module_t *mod; mod = (void *)PHYS_VIRT(mbd->mods_addr); // Expand kernel end to include the loaded modules kinfo.end = (void *)PHYS_VIRT(mod[mbd->mods_count - 1].mod_end); // The first module is the initfs the rest are drivers if (mbd->mods_count > 1) arch_init_drivers(&mod[1], mbd->mods_count - 1); } // Start the memory manager mm_init(128 * 1024); dev_init(); kernel_init(); }
void common_init() { dma_init(); fdc_add(); lpt_init(); pic_init(); pit_init(); serial1_init(0x3f8, 4); serial2_init(0x2f8, 3); device_add(&gameport_device); }
void pcjr_init() { fdc_add_pcjr(); pic_init(); pit_init(); pit_set_out_func(0, pit_irq0_timer_pcjr); serial1_init(0x2f8, 3); keyboard_pcjr_init(); device_add(&sn76489_device); nmi_mask = 0x80; }
void init(struct multiboot *mb) { size_t i; for(i=0;i<TEXT_HEIGHT*TEXT_WIDTH*2;i++) { *(((char *)TEXT_BUFFER)+i)=0; } text_pos=0; printk("benaryOS booted"); if(mb->mbs_cmdline) { printk(" with cmdline \"%s\"",(char *)mb->mbs_cmdline); } putchar('\n'); hardware_detection(); //Physical Memory Management printk("initialise PMM\n"); pmm_init(mb); //Global Descriptor Table printk("loading GDT\n"); gdt_init(); //Programmable Interrupt Timer printk("initialise PIT\n"); pit_init(100); //Programmable Interrupt Controller printk("initialise PIC\n"); pic_init(); //Interrupt Descriptor Table printk("initialise IDT\n"); idt_init(); //Paging printk("initialise Paging\n"); paging_init(mb); //Modules printk("loading modules(%d)\n",mb->mbs_mods_count); modules_init(mb); printk("benaryOS running\n"); printk("starting first task now\n"); asm volatile("sti"); //find_com(); //this will forget our thread asm volatile("int $0x20"); }
/*! @brief Kernel initialiser. * Initialise the kernel by initialising the timer and setting up space for * tasks. * @return None. */ void kernel_init (void) { /* Setup timer */ pit_init (); /* Setup task storage */ tasks = (task_t *) malloc (MAX_TASKS * sizeof (task_t)); #ifdef DEBUG if (!tasks) debug_error (ERR_KERNEL_MALLOC); #endif }
void bootloader_apic_calibrate_timer(void) { t_ia32_gate gate; t_sint32 t1; t_sint32 t2; /* * 1) */ apic_write(APIC_REG_DIV, 10); apic_write(APIC_REG_TIMER_CONF, 1 << 16); /* * 2) */ apic_write(APIC_REG_TIMER, 1000000000); /* * 3) */ gate.offset = (t_uint32)bootloader_apic_calibrate_tick; gate.segsel = IA32_PMODE_BOOTLOADER_CS << 3; gate.privilege = 0; gate.type = ia32_type_gate_interrupt; idt_add_gate(NULL, 32, gate); pit_init(200); pic_enable_irq(0); ticks = 0; t1 = apic_read(APIC_REG_COUNT); while (ticks < 100) ; pic_disable_irq(0); t2 = apic_read(APIC_REG_COUNT); /* * 4) */ timeref = (t1 - t2); }
int main() { /* Update the SystemCoreClock variable */ SystemCoreClockUpdate(); /* Configure the SysTick */ SysTick_Config(SystemCoreClock / 1000); /* Initialize the PIT */ pit_init(); while(1){ } }
void main (void) { //初始化正交解码功能 qd_init(); //初始化PIT定时中断 //用来定时读取正交解码的计数结果 pit_init(); while(1) { printf("QD Counter = %d\r\n", qd_result); delay(1000); } }
int timer_init(tim_t dev, unsigned long freq, timer_cb_t cb, void *arg) { if ((unsigned int)dev >= TIMER_NUMOF) { /* invalid timer */ return -1; } /* demultiplex to handle two types of hardware timers */ switch (_timer_variant(dev)) { case TIMER_PIT: return pit_init(_pit_index(dev), freq, cb, arg); case TIMER_LPTMR: return lptmr_init(_lptmr_index(dev), freq, cb, arg); default: return -1; } }
int32_t kernel_main(multiboot_t *mboot_ptr) { textmode_init(); printf(" _____ _ _ ____ _____ \n / ____(_) | | / __ \\ / ____|\n | (___ _ _ __ ___ _ __ | | ___| | | | (___ \n \\___ \\| | '_ ` _ \\| '_ \\| |/ _ \\ | | |\\___ \\ \n ____) | | | | | | | |_) | | __/ |__| |____) |\n |_____/|_|_| |_| |_| .__/|_|\\___|\\____/|_____/ \n | | \n |_| \n"); textmode_set_colors(COLOR_RED, COLOR_BLACK); textmode_move_cursor(19, 6); printf("Version %i.%i.%i", VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD); textmode_move_cursor(19, 7); printf("Built %s", VERSION_DATE); textmode_set_colors(COLOR_GREEN, COLOR_BLACK); textmode_move_cursor(41, 6); printf("Written by Joe Biellik"); textmode_set_colors(COLOR_LTGRAY, COLOR_BLACK); textmode_move_cursor(0, 9); fpu_init(); gdt_init(); idt_init(); __asm __volatile__("sti"); // Start interrupts pit_init(); serial_init(); // Test serial int8_t buffer[50]; sprintf(buffer, "SimpleOS %i.%i.%i (%s)\n", VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_DATE); serial_write(SERIAL_PORT_A, buffer); // Test RTC datetime_t *dt = 0; rtc_get(dt); printf("Started at %02i-%02i-%02i %02i:%02i:%02i\n\n", dt->year, dt->month, dt->day, dt->hour, dt->min, dt->sec); // Test CPU cpu_detect(); printf("\n"); // Test PCI pci_scan(); for (;;); return 0x12345678; }
void common_init() { dma_init(); fdc_add(); lpt_init(); pic_init(); pit_init(); serial1_init(0x3f8, 4); serial2_init(0x2f8, 3); memregs_init(); device_add(&gameport_device); machine_class = MC_PCAT; has_pc87306 = 0; /* It then gets set for the models that do need it. */ fdc_clear_dskchg_activelow(); fdc_polarity_reset(); }
int main(void) { /* initialize LED and debug unit */ led_init(); sysirq_init(); AT91F_DBGU_Init(); AT91F_PIOA_CfgPMC(); wdt_init(); pit_init(); blinkcode_init(); /* initialize USB */ req_ctx_init(); usbcmd_gen_init(); udp_open(); /* call application specific init function */ _init_func(); // Enable User Reset and set its minimal assertion to 960 us AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4 << 8) | (unsigned int)(0xA5 << 24); #ifdef DEBUG_CLOCK_PA6 AT91F_PMC_EnablePCK(AT91C_BASE_PMC, 0, AT91C_PMC_CSS_PLL_CLK); AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, 0, AT91C_PA6_PCK0); #endif /* switch on first led */ led_switch(2, 1); DEBUGPCRF("entering main (idle) loop"); while (1) { /* Call application specific main idle function */ _main_func(); dbgu_rb_flush(); /* restart watchdog timer */ wdt_restart(); #ifdef CONFIG_IDLE //cpu_idle(); #endif } }
void pcjr_init() { PCI = 0; maxide = 2; AT = 0; is386 = 0; fdc_add_pcjr(); pic_init(); pit_init(); pit_set_out_func(0, pit_irq0_timer_pcjr); serial1_init(0x2f8, 3); keyboard_pcjr_init(); memregs_init(); device_add(&sn76489_device); nmi_mask = 0x80; machine_class = MC_PCJR; fdc_polarity_reset(); }
void init_all() { init_gpio(); pwm_init(); adc_init(); init_all_pulse_counter(); LPLD_Flash_Init(); init_sdhc(); //SD卡模块初始化 uart_interr_init(); init_i2c(); //MPU6050初始化 //LPLD_MMA8451_Init(); OLED_Init(); pit_init(); init_paranum(); init_setpara(); init_readpara(); save.g_s16SDDenoteNum = 0;//防止不小心保存非0数 }
int kmain(void* UNUSED(mbd), unsigned int UNUSED(magic)) { cpu_init(); //set up GDT idt_install(); //set up IDT interrupts_init(); //set up callback table pic_init(); //set up PIC print_clear(); print_string_static("Hello... I'm a C Kernel!1!!\nAnd I have a PIC and PIT intialized.\n"); interrupts_enable(); interrupts_registerHandler(IRQ_TIMER, timerHandler); pit_init(50); pic_unmask_irq(IRQ_TIMER); for(;;); return 0; }