tag 标签: bsp移植

相关博文
  • 热度 20
    2016-4-2 09:50
    1073 次阅读|
    0 个评论
      1、将调试串口更改为 ttyS1 , sioChanCreate 输入参数改为 1 2 、 bspDebugMsg 的串口设置为 2 。启动开发板执行镜像可以执行,在昨天的设置中没有正确修改设置 sioChanCreate 的参数,导致无法正常输出信息。 3 、 SD 卡部分:将 sd 管脚相关状态设置正常,在 IMX6Q_pfuncClockSet 函数中, clk 设置选项使用的是固定接口,需要根据电路板修改,后续修改成正常状态。随后提示说明有 sd 卡检测到,也 mount 成功 但此时在 media 下没有 sdcard0 的目录,而且在启动过程中 sd 的检测特别慢 . 后来发现是 sd 卡的管脚分配问题, 由于 E9 开发板和 sabrelite 均使用了 usdhc4 通道,在从 E9 向 sabre 移植的时候,忘记了修改 pinmux 。 4 、在 sd 初次插入时可能因为分区或其他问题导致 /media 目录下没有 sdcard0 等类似设备,这时需要使用命令创建分区等操作 ; fdisk -f /dev/blk/sdcard0  分区正常后在media下会有相应的设备,随后使用 mkfs sdcard0           重新格式化sd卡,即可以正常使用。   对 sd 卡的读写函数最终是通过 sdmemory.c 文件中的函数实现,可以在函数中插入如下语句进行调试 printk("%s (): %d-%d\n", __func__, ulStartBlk, ulBlkCount); 4 、以太网部分修改 phy 地址, phy 状态读写寄存器,更重要的是在 enetCoreInit 函数中的 enetCoreStart 下面添加 ksz9021rnPhyInit(); 语句,否则网络无法正常使用
  • 热度 21
    2015-10-21 20:55
    1667 次阅读|
    1 个评论
    今日拿到一块朋友制作的 AM335x 电路板,这里暂且称为 oem335x ,本博客记录在 oem3358 上的运行 SylixOS 操作系统的过程。 目前 SylixOS 官网中发布的 am335x 系列 bsp支持 beaglebone 、 ok335xd 、 ok335xs ,根据只有 ok335xs 支持双千兆以太网,因此选用 ok335xs 的 bsp 做模板。 1.1.1    uboot 配置项目 目前 oem335x 使用 SD 卡启动,不支持以太网、也不支持 U 盘,因此对调试效率带来影响,若高效率调试,还需要在 uboot 中添加对以太网的支持。 根据提供的 uboot 的代码增加了对 uboot 以太网的支持,由于使用 sd 卡启动,不能够保持设置的 serverip 等信息,因此在 uboot 启动后需要手动设置 serverip 变量,随后使用 dhcp 命令自动获取本机 ip 地址, uboot 会自行启动 tftp 命令下载 sylixos 镜像文件。 1.1.2    运行 SylixOS 系统 首先将 AM335xbsp 编译运行,在测试中发现当 SylixOS 检测硬件不通过时,系统会阻塞在一个地方,因此将 rsb4221 中没有的器件屏蔽掉。屏蔽掉的器件有: l   TPS65217 电源芯片 屏蔽代码 bspForlinx.c 中 bspDrvInit 函数中 tps65217Drv 函数; 屏蔽代码 bspForlinx.c 中 bspDevInit 函数中 tps65217DevCreate 函数。 l   ft5x06 触摸屏驱动 屏蔽代码 bspForlinx.c 中 bspDrvInit 函数中 ft5x06Drv 函数; 屏蔽代码 bspForlinx.c 中 bspDevInit 函数中 ft5x06DevCreate 函数。 l   ds1337 的驱动 屏蔽代码 bspForlinx.c 中 bspTimeInit 函数中所有代码; l   beep 驱动 屏蔽代码 bspForlinx.c 中 bspDrvInit 函数中 beepDrv 函数; 屏蔽代码 bspForlinx.c 中 bspDevInit 函数中 beepDevCreate 函数。 l   audio 驱动 屏蔽代码 bspForlinx.c 中 bspDrvInit 函数中 audioCodecDrv 函数; 屏蔽代码 bspForlinx.c 中 bspDevInit 函数中 audioCodecDevAdd 函数。 l   修改 makefile ,使之只支持单个电路板 删除 BSP_SRCS 的选择宏命令。 l   修改源文件 config_ok335xs.h 中的宏, 将 OK335xS 部分修改为 OEM335X 。 触摸屏相关配置为 0 ( #define BSP_CFG_FT5X06_TOUCH_EN  0 ) 网口相关配置,更改 PHY 芯片地址, U15 对应 PHY 地址 011 = 3 ( #define CPSW0_PORT_1_PHY_ADDR 3 ); U16 对应 PHY 地址 111 = 7 ( #define CPSW0_PORT_2_PHY_ADDR 7 )。 NAND 相关配置均设置为 0 ( #define BSP_CFG_NAND_EN  0 )。 1. 进行上述改动后,编译 bsp 并将生成的文件下载到 oem335x 运行,能起到,但输出信息为 archMmuInit() error:machine name is NOT fix with compiler –mcpu or march parameter archCacheInit() error: machine name is NOT fix with compiler –mcpu or march parameter envionment variables load from /etc/profile fail,error:No such file or directory archCacheInit 函数也是类似。 l   问题原因及解决: 工程使用的 sylixos-base 工程是从官网 git 下的原始工程,没有配置其中的 -mcpu 选项, 打开文件 sylixos-base/libsylixos/Makefile ,修改其中的 -mcpu 配置为 cortex-a8 打开文件 sylixos-base/libcextern/Makefile ,修改其中的 -mcpu 配置为 cortex-a8 完成上述修改后,重启开发板使用新 SylixOS 镜像启动,已经不会有这种错误出现。 2. 虽然以太网 PHY 芯片不同,但 oem335x 的以太网能够正常使用,在正确设置 ip 地址后,两个千兆网口是可用的,可以理解为 RTL8211E 与 AR8031 的驱动是兼容的。仅仅是 PHY 芯片的地址不同。 1.1.3    添加 SD 卡和 RAMFS 系统启动后发现 SD 卡不能使用,核对原理图发现需要修改 mmc0 的引脚分配。 原理图中 ; 在 bspForlinx.c 文件中, Module pin mux for mmc0 目录下,有宏定义: __MMC0_CD_GPIO 更改如下: #define __MMC0_CD_GPIO      AM335X_GPIO_NUMBER(3, 14) 完成上述修改后,重新编译系统启动, sylixos 可以正常识别 SD 卡。 此时 SylixOS 的 shell 输出用户是 unknown ,这里添加 RAMFS 设置 在文件 bspInit.c 中的函数 halStdDirInit 结束位置添加如下代码: #if BSP_CFG_RAM_ROOTFS_EN 0     mkdir("/ramdisk/boot", DEFAULT_DIR_PERM);     mkdir("/ramdisk/etc", DEFAULT_DIR_PERM);     mkdir("/ramdisk/ftk", DEFAULT_DIR_PERM);     mkdir("/ramdisk/qt", DEFAULT_DIR_PERM);     mkdir("/ramdisk/lib", DEFAULT_DIR_PERM);     mkdir("/ramdisk/lib/modules", DEFAULT_DIR_PERM);     mkdir("/ramdisk/usr", DEFAULT_DIR_PERM);     mkdir("/ramdisk/usr/lib", DEFAULT_DIR_PERM);     mkdir("/ramdisk/bin", DEFAULT_DIR_PERM);     mkdir("/ramdisk/sbin", DEFAULT_DIR_PERM);     mkdir("/ramdisk/apps", DEFAULT_DIR_PERM);     mkdir("/ramdisk/home", DEFAULT_DIR_PERM);     mkdir("/ramdisk/root", DEFAULT_DIR_PERM);     mkdir("/ramdisk/var", DEFAULT_DIR_PERM);       symlink("/ramdisk/boot", "/boot");     symlink("/ramdisk/etc",  "/etc");                                       symlink("/ramdisk/ftk",  "/ftk");                                       symlink("/ramdisk/qt",   "/qt");                                        symlink("/ramdisk/lib",  "/lib");     symlink("/ramdisk/usr",  "/usr");     symlink("/ramdisk/bin",  "/bin");     symlink("/ramdisk/sbin", "/sbin");     symlink("/ramdisk/apps", "/apps");     symlink("/ramdisk/home", "/home");     symlink("/ramdisk/root", "/root");     symlink("/ramdisk/var",  "/var"); #endif 在头文件config_ok335xs.h中添加宏定义 /******************************************************************************   RAMFS 配置 ******************************************************************************/ #define BSP_CFG_RAM_ROOTFS_EN               1 在启动后, SylixOS 的默认用户就不再是 unknown 而是 root 。此时使用 FileZilla 工具可以查看 SylixOS 系统的资源。使用 Telnet 也可以连接 SylixOS 设备。    在调试过程中,还出现了“ ..can not find symbol: printf ”的错误,原以为是什么的大问题,后来发现是 bsp 的 base 工程编译设置和应用程序参考的 base 工程编译设置不同更改一致即可。至此 oem335x 电路板基本可以正常工作,常用接口可以正常使用。