示例#1
0
//----------------------------------------------------------------------------------------------------------------------------------
// 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();
}
示例#2
0
文件: init.c 项目: ccarcel/dosemu2
/*
 * 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();
}
示例#3
0
void us_ticker_init(void) {
    if (us_ticker_inited) return;
    us_ticker_inited = 1;
    
    pit_init();
    lptmr_init();
}
示例#4
0
文件: test_pit.c 项目: aarzho/k60
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
}
示例#5
0
文件: init.c 项目: JamesLinus/levos6
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;
}
示例#6
0
/***********************************************************
 *功能:	初始化实现模拟定时器所需的pit定时器,基准定时1ms
 *形参:
 *			无
 *返回:
 *			无
 */
void InitSimulatTimer(void)
{
	uint32_t cnt;
  
	cnt = bus_clk_khz * 1u;
	pit_init(SimulatTimer_PIT_Tn, cnt);	//1ms基准周期定时
}
示例#7
0
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;
}
示例#8
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();
    }
}
示例#9
0
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();
    }
}
示例#10
0
void arch_entry() { 
  paging_init();
  gdt_init();
  idt_init();
  isr_init();
  pic_init();
  pit_init();
}
示例#11
0
文件: pc.c 项目: pleed/pyqemu
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)
  {

  } 
}
示例#13
0
文件: timer.c 项目: treewojima/treeos
/* 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);
}
示例#14
0
void common_init()
{
        dma_init();
        fdc_add();
        lpt_init();
        pic_init();
        pit_init();
        serial1_init(0x3f8, 4);
        serial2_init(0x2f8, 3);
}
示例#15
0
/** 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();
}
示例#16
0
文件: arch.c 项目: jbussdieker/EOS
/// 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();
}
示例#17
0
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);
}
示例#18
0
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;
}
示例#19
0
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");
}
示例#20
0
/*! @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
}
示例#21
0
文件: apic.c 项目: fenollp/kaneton
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);
}
示例#22
0
文件: main.c 项目: Qub3k/robotic_arm
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);
  } 
}
示例#24
0
文件: timer.c 项目: ReneHerthel/RIOT
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;
    }
}
示例#25
0
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;
}
示例#26
0
文件: model.c 项目: Wack0/PCem-X
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();
}
示例#27
0
文件: main.c 项目: 12019/openpcd
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
	}
}
示例#28
0
文件: model.c 项目: Wack0/PCem-X
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();
}
示例#29
0
文件: car_init.c 项目: HolaRobo/car
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数
}
示例#30
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;
}