Skip to content
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

zephyr on milkv-duo by Jude小队 #2

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

Judehahh
Copy link

@Judehahh Judehahh commented Feb 27, 2024

Dears,

此为由本人个人组成的Jude小队的工作成果,将 zephyr 移植到了 milkv-duo 开发板,能在小核上运行并默认使用 UART1 进行串口输出,目前支持 中断、时钟、UART、GPIO 以及 I2C 功能。

目前已测试完成的 samples 有:

  • hello_world:
    时钟中断与任务切换。

  • posix/uname:
    UART 终端,可通过 uname -a 命令查看内核信息。

  • basic/blinky:
    板载 led 灯闪烁,需要先移除大核 linux 侧的 /mnt/system/blink.sh 脚本 。

  • basic/button:
    通过连接及断开 GP153V3 来模拟按钮,以验证 GPIO 中断,发生中断时 UART1 会输出 log。

  • sensor/sht3xd:
    SHT3XD 温湿度传感器实例,以验证 i2c 功能。测试时使用 SHT30-D 传感器,按以下方式连接,可通过 UART1 查看数据。

Duo----------SHT30-D
3V3(OUT)-----VIN
GND----------GND
GP10---------SDA
GP11---------SCL

以上 samples 皆通过 UART1 输出/输出,使用 GP0 作为 TX, GP1 作为 RX。pinout 图

samples 编译方式:

west build -p always -b milkv_duo_cv1800b samples/hello_world
west build -p always -b milkv_duo_cv1800b samples/posix/uname
west build -p always -b milkv_duo_cv1800b samples/basic/blinky
west build -p always -b milkv_duo_cv1800b samples/basic/button
west build -p always -b milkv_duo_cv1800b samples/sensor/sht3xd

编译出来 build/zephyr/zephyr.bin 即为小核 zephyr 固件

生成 fip.bin

cd prebuilt
./fip.sh
ls fip.bin

prebuilt 目录提交作测试用,包含了制作 fip.bin 所需要的文件。

可以使用自己编译的 zephyr.bin 固件配合 fip.sh 脚本生成 fip.bin,或者使用在 prebuilt/images 中提供了已经制作好的固件(需手动重命名为 fip.bin)。然后将 fip.bin 拷贝到 duo 的 tf 卡的第一分区即可进行测试。

由于尚未在 zephyr 中添加 pinmux 支持,prebuilt 目录中的 bl2.bin 文件经过以下修改:

diff --git a/fsbl/plat/cv180x/bl2/bl2_main.c b/fsbl/plat/cv180x/bl2/bl2_main.c
index d48416d3b..6ad00c9ee 100644
--- a/fsbl/plat/cv180x/bl2/bl2_main.c
+++ b/fsbl/plat/cv180x/bl2/bl2_main.c
@@ -4,6 +4,13 @@
 #include <bl2.h>
 #include <string.h>
 #include <delay_timer.h>
+#include <cv180x_pinlist_swconfig.h>
+#include <cv180x_reg_fmux_gpio.h>
+
+#define PINMUX_CONFIG(PIN_NAME, FUNC_NAME) \
+       mmio_clrsetbits_32(PINMUX_BASE + FMUX_GPIO_FUNCSEL_##PIN_NAME, \
+               FMUX_GPIO_FUNCSEL_##PIN_NAME##_MASK << FMUX_GPIO_FUNCSEL_##PIN_NAME##_OFFSET, \
+               PIN_NAME##__##FUNC_NAME)
 
 #ifdef RTOS_ENABLE_FREERTOS
 int init_comm_info(int ret)
@@ -95,6 +102,13 @@ void bl2_main(void)
        set_rtc_en_registers();
 
        load_ddr();
+
+       PINMUX_CONFIG(IIC0_SCL, UART1_TX);
+       PINMUX_CONFIG(IIC0_SDA, UART1_RX);
+
+       PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA);
+       PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL);
+
 #ifdef OD_CLK_SEL
        load_rest_od_sel();
 #else

@shiptux
Copy link

shiptux commented Mar 5, 2024

你好,目前验证中发现 PR 中 Hello World 和 posix/uname 这两个源码编译和 prebuild/image 下预编译的 fip.bin 行为不一致。 Hello World 预编译的 fip.bin 会切换线程打印,使用 PR 源码编译则仅打印一次。使用源码编译的 posix/uname 示例连接 Shell 后是找不到 uname 以及其他命令的,预编译的则正常。我们验证的时候,不论是镜像还是代码只要有一份能通过就可以了,按照目前的情况本 PR 会以你提交的二进制为准。

@Judehahh
Copy link
Author

Judehahh commented Mar 5, 2024

Hi shiptux,

十分抱歉,我的 PR 描述中出现了疏忽,为你们带来了额外的工作负担。若需要重新验证源码编译,可参考以下信息:

验证时钟中断与任务切换的 sample 应为:synchronization。使用以下命令编译:

west build -p always -b milkv_duo_cv1800b samples/synchronization

而在 sample posix/uname 中,应使用 posix uname -a 命令来查看内核信息,或者使用 help 命令来查看更多其他的命令。

@shiptux
Copy link

shiptux commented Mar 6, 2024

Hi shiptux,

十分抱歉,我的 PR 描述中出现了疏忽,为你们带来了额外的工作负担。若需要重新验证源码编译,可参考以下信息:

验证时钟中断与任务切换的 sample 应为:synchronization。使用以下命令编译:

west build -p always -b milkv_duo_cv1800b samples/synchronization

而在 sample posix/uname 中,应使用 posix uname -a 命令来查看内核信息,或者使用 help 命令来查看更多其他的命令。

Ok. 这里验证没有问题,感谢你的回复。

@shiptux
Copy link

shiptux commented Mar 26, 2024

尊敬的参赛选手,您好。
本次锦标赛您所提交的 PR 初步复测结果如 https://github.com/plctlab/rvspoc/blob/main/Results/Verifications/P2307/README.md 所示。如有任何异议请回复本条评论。如确认无误请回复 “确认无误”,感谢您的配合。

@Judehahh
Copy link
Author

尊敬的参赛选手,您好。 本次锦标赛您所提交的 PR 初步复测结果如 https://github.com/plctlab/rvspoc/blob/main/Results/Verifications/P2307/README.md 所示。如有任何异议请回复本条评论。如确认无误请回复 “确认无误”,感谢您的配合。

确认无误

@shiptux
Copy link

shiptux commented Mar 26, 2024

尊敬的参赛选手,您好。 本次锦标赛您所提交的 PR 初步复测结果如 https://github.com/plctlab/rvspoc/blob/main/Results/Verifications/P2307/README.md 所示。如有任何异议请回复本条评论。如确认无误请回复 “确认无误”,感谢您的配合。

确认无误

感谢您的回复。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants