ARM学习笔记之——MiniOS
时间:11-20
来源:互联网
点击:
- 断,准备进入进程初始化函数
- sched_init();//进程调度初始化
- OS_EXIT_CRITICAL();//开启中断
- ENTER_USR_MODE();//进入用户模式
- //进程0执行内容
- while(1){
- DPRINTK(KERNEL_DEBUG,"kernel:process0");
- printk("process0,idle");
- wait(1000000);
- }
- return0;
- }
在执行完 mmu_init 函数之后,所有的数据访问均是通过虚拟地址访问的。包括接下来的UART、IRQ、TIMER0、LED、KEY的初始化,通是访问的虚拟地址。详见uart_init 函数中,读写的寄存器地址。
sched_init() 函数的功能是初始化所有的PCB。在最后,初始化PCB[0]。把 current=&task[0] 。
- /*初始化0号进程*/
- p=&task[0];//p指向0号进程PCB
- p->pid=0;//设置0号进程pid
- p->state=TASK_RUNNING;//设置其运行状态为就绪态
- p->count=5;//设置其时间片为5
- p->priority=5;//设置优先级为5
- p->content[0]=0x5f;//保存状态寄存器cpsr值,表示为系统模式,开启中断
- p->content[1]=SYS_MODE_STACK_BASE;//设置当前进程栈指针
- p->content[2]=0;
- p->content[16]=0;//设置PC寄存器的值为0,该进程起始地址被MMU映射为0地址
- current=&task[0];//当前运行进程为0号进程
ARMMiniO 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)