[TOC]
Yeyotow: Yesterday you said tomorrow .
1. 分支micro2440是在公司借的测试板子上面编写的系统,这是在2019年10月份完成的,后自己在闲鱼上面花100元买了一个mini2440的板子,很便宜,但是与micro2440略有差异, 经过一系列改动后,之后的日子仅仅维护mini2440的平台。micro2440暂时停滞在Version1.0版本.
开发板闲鱼链接:搜索mini2440,购买即可(需要包含主板+电源+烧录线+串口线)
windows 或 ubuntu均可
windows下需要下载arm-none-eabi- 工具链,并添加环境变量到PATH
ubuntu下直接运行sudo apt-get install gcc-arm-none-eabi
windows下安装gittortoise, 右键进入git-bash环境,在该shell下进入源码目录YeyotowOS, 执行 ./build.sh 完成编译;
ubuntu下打开terminal, 进入源码目录YeyotowOS, 执行./build.sh完成编译;
连接开发板,将烧录线和串口线均连接到上位机,以便烧录和查看串口输出;
拨码开关(耳机口附近) 拨到Nor模式
打开MiniTool软件 >> 裸机烧录 >> Nand >> format >> ram addr: 0x30000000 >> superboot选择YeyotowOS/tinyboot/bootloader.bin >> OS 选择 YeyotowOS/YeyotowOS/bin/firmwire.bin
上电,此时Minitool下面提示连接成功,表示进入刷机模式,点击烧录即可
烧录完成后 >>断电 >> 拨码开关拨回 >> 重新上电 >> 串口显示系统Logo !
Welcome to the new World
____________________
| * |
| * * |
| * |
| * |
|____________________|
| .-"""-.
| / .===. \
| \/ 6 6 \/
| ( \_6_/ )
| \__-__/
| _________ooo____|_|_________________
| 2 0
| | jxj-723 one_face@sina.com |
| | A simple kernel : YeyotowOS |
| | Yestoday you said tomorrow ! |
| 1_______________________ooo_________ 9
| | | |
| |_ | _|
| | | |
|__|__|
f-'Y'-u
(__c k__)
kernel thread`s stack top address :0x301002fc, in .bss seg !
.
Hello TaskStart Task0
[Yeyotow]#.
keanu@yeyotow:~/src/yeyotow/YeyotowOS$ tree -L 3
.
├── build.sh-----------------------------------编译脚本
├── doc----------------------------------------文档资料
├── LICENSE
├── README.md
├── tinyboot-----------------------------------bootloader
└── YeyotowOS----------------------------------内核主目录
├── bin------------------------------------内核固件
│ ├── firmware.bin
│ └── firmware.elf
├── bsp------------------------------------bsp源码
│ ├── app--------------------------------用户程序
│ ├── dev--------------------------------设备驱动
│ └── start------------------------------系统板级启动代码
├── config.mk
├── makefile
├── os-------------------------------------内核
│ ├── include----------------------------内核头文件
│ ├── kernel-----------------------------内核源码
│ ├── lib--------------------------------系统库
│ ├── module-----------------------------功能组件
│ └── soc--------------------------------平台接口
└── rules.mk
注意:
由于CPU的限制,以下功能有几个是不支持的,即便支持的目前也么有完全实现
完成tinyboot对firmware.bin的搬运 | 完成OS任务的启动和切换 | 完成中断的跳转 |
---|---|---|
完成中断向量去tinyboot化(通过MMU实现虚拟地址0x0->物理地址0x30000000的映射) | MMU基础上完成一级页表管理 | |
完成tinyshell功能支持 | 完成cpu状态查询命令 top | 完成irq状态查询命令 ints |
完成mem状态,包括各个段的地址划分/映射表 mems | 多核多进程管理 | |
YeyotowOS运行在两个CPU核上 | 重启热启动reset功能支持 | 优化tick被嵌套打断时,修正tick计时器. |
反复完善系统已有功能, 优化中断服务接口,优化代码整体结构. | 0核运行SylixOS, 1核运行YeyotowOS, 各自有自己的shell终端。 | |
shell中添加内核机制的测试命令,如测试信号量:semtest | 实现i2c的驱动 实现eeprom的驱动 实现i2c的框架 使用框架与内核机制重新实现eeprom的驱动 |
|
实现声卡驱动 实现shell命令从nand中读取并播放mp3 | 实现网卡网卡驱动 实现tftp协议, 将mp3写入到内存 实现shell命令nandread,将内存内容写入到nand 校验上述功能的准确性 |
|
中断注册函数要支持传参,否则根据中断号判断产生中断的控制器句柄占用“等待中断开状态”时间,比较耗时. 注意在支持传参完成后注意修改所有如串口等中断注册驱动 |
多核多操作系统多进程管理 | |
两个不同OS的cpu核之间进行通信,共享内存。 | ||
添加设备层,使用链表管理所有设备,dev_open设备名字去获得实际的设备句柄;各个设备驱动需要改写,写成结构体,至少包含设备名和设备操作集两个成员。 |
使用TFTP方式调试 修改tinyboot支持tftp下载内核镜像 调试可以不再使用MiniTools工具刷机 需要完成dm9000网卡驱动 需要完成tftp基本协议,下载主机上的镜像 |
|
添加设备框架层缓冲区:暂时不做设备模型,只将网卡的驱动上层加入收发阻塞缓冲,底层采用中断主动触发方式上交数据包 | ||
shell中的uart驱动中断中必须加入printf("..\n");才可以正常输出[Yeyotow#] | key按键中断和输入help命令 等连续使用会引起系统死机 |
|
---|---|---|
当前版本的bug:Task1 Task2 不能输出信息 | ||
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。