-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Baremetal xv6 ported to milkv duo #4
base: riscv
Are you sure you want to change the base?
Conversation
引脚分配图中黑框圈出的引脚即为测试示例测试的引脚,已配置好引脚复用,将对应外设连接即可测试。 示例
|
尊敬的参赛选手,您好。 |
@shiptux 您好,我有几个问题:
|
选手,您好。主要以表格为统一。您的 I2C 是通过验证的。下面的验证过程中能从日志看出已经明显读出了数据。至于这里的 OK 是我们在验证过程中的标记,由于验证并没有在一个自然天内完成,涉及到设备采购等。这里漏了一个 OK, 对于给您带来的误解深感抱歉。稍后我会增添一个 PR 添加上这个 OK. |
选手您好。 针对您提出的问题关于 PR2 的 UART 是否实现的情况:
由于我们的赛题中没有明确规定和描述 uart 的交付和判定细节,关于我们的赛题评定规则此部分需要等待之后的评委进行讨论和完善。 感谢您完成的这部分工作,以及发现和提出的这个问题。 |
简单说一句:xv6本身的shell console就是uart测试用例,shell下console能输入输出即可验uart驱动和测试用例 |
"测试示例需要把开发板的 uart 4 连接到电脑的串口工具中。一串字符会先被输出到串口工具中,然后我们可以在串口工具中打字,打字的长度由测试示例的第一个参数决定,串口工具中输入的字符会重新在串口工具中显示。" 这一步对于验证串口来说与用串口工具minicom/putty接console操作并无区别 |
@shiptux 您好,我附上了产出及评分要求。 您说的第一点,以及 pr2 选手说的「简单说一句:xv6本身的shell console就是uart测试用例,shell下console能输入输出即可验uart驱动和测试用例」对应要求第一条中的「UART 通讯」。 您说的第二点对应要求第二条中的「支持基础外设驱动包括 UART 并编写相应示例」。我只是按照赛题要求进行实现,并没有额外完成任务。 而且我认为赛题中的「uart 的交付和判定细节」已经描述得很清晰了,首先要支持 xv6 的 console(即要求第一条中的「UART 通讯」),然后要支持驱动 UART 并附带用户程序示例(即要求第二条)。 如果当初在制定赛题要求时,第二条中没有包括 UART,那我才是「额外实现了 uart_dev.c 支持驱动和配置额外的 uart 引脚」。 |
uart使用的相应示例xv6本身就有,这就不用额外编写。这个话题不会再评论 |
选手们,你们好。上述意见均已收集并汇总提交给评委进行讨论。预计最迟下周一会有反馈。 |
@shiptux 你好,有说法吗 |
选手您好,很抱歉,目前针对此项目还没有讨论出结论。预期在本周内会有进一步的信息给出。 |
选手您好:
|
烧录
执行根目录下的 script,提供 sd 卡的设备文件名,如
./script /dev/sdb
,产生的二进制文件路径为port/image/output/milkv-duo.img
。驱动
i2c
SOC 提供了 5 个 i2c controller,开发板从 controller 0、1、3 引出引脚。
驱动支持每次控制 i2c 0、1、2、3、4 中的任意 1 个,ioctl 配置 slave 地址,并 read write 值。
为了演示方便,测试示例只驱动 i2c 1。
测试示例需要连接陀螺仪传感器 MPU6050,可以获得三轴加速度和角速度(数据为未经处理的原始数据)。
uart
SOC 提供了 5 个 uart controller,开发板对 5 个 controller 都提供引脚。
uart 0 与 console 相连,不被驱动。
驱动支持每次控制 uart 1、2、3、4 中的任意 1 个,ioctl 配置 uart 参数,并 read write 值。
为了演示方便,测试示例只驱动 uart 4。
测试示例需要把开发板的 uart 4 连接到电脑的串口工具中。一串字符会先被输出到串口工具中,然后我们可以在串口工具中打字,打字的长度由测试示例的第一个参数决定,串口工具中输入的字符会重新在串口工具中显示。
adc
SOC 提供了 1 个 adc controller,开发板从这个 controller 引出引脚。
驱动支持每次控制这个 controller 的任意 1 个 channel,并 read 值。
为了演示方便,测试示例只驱动 channel 1。
测试示例会读 10 次 channel 1 的输入值,可以将 3.3v 输入 channel 1 然后取消输入,观察 channel 1 读取到的数字量的变化。
pwm
SOC 提供了 4 个 pwm controller,开发板从 controller 1 和 2 引出引脚。
驱动支持每次控制任意 1 个 controller 的任意 1 个 channel,ioctl 配置并使能 channel。
为了演示方便,测试示例只驱动 pwm5(pwm 1 的 channel 1)。
测试示例需要连接 DF9GMS 180 微型舵机,可以对 pwm5 设置不同的 duty,使舵机的舵进行不同角度旋转。
gpio
SOC 提供了 4 个 gpio controller,开发板从 4 个 controller 都有引出 gpio 引脚。
驱动支持每次控制任意 1 个 controller 的任意 1 个 channel,ioctl 配置为输入或输出,并 read 或 write 值。
为了演示方便,测试示例只驱动开发板上的 GP0(gpio 0 的 channel 28)和 GP25(gpio 2 的 channel 24)。
测试示例会先使开发板的蓝色 led 进行闪烁,然后读取 10 次 GP0 处的输入。GP0 的原始输入是 1,接地后输入为 0。
spi
SOC 提供了 4 个 spi controller,开发板从 controller 2 引出引脚。
驱动支持每次控制任意 1 个 controller,ioctl 配置模式与频率,并启动读写。
为了演示方便,测试示例只驱动 spi 2。
测试示例为 spi 回环测试,需要短接 spi 2 的两个数据引脚。发出的数据会一摸一样得被接收到。