香橙派 rk3588 pro uboot(一)

一,环境安装

rk3588 编译环境 ubuntu2204

虚拟机按照好后,更新:

sudo apt-get install git bc bison build-essential curl flex g++-multilib gcc-multilib gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc yasm zip zlib1g-dev python device-tree-compiler expect g++ patchelf gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build fakeroot cmake python-pip repo ssh make gcc libssl-dev unzip ncurses-dev

编译环境:git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next

编译全包如果出错,例如git链接错误,重启虚拟机重新编译。

二,编译烧录

首先设置配置文件保证修改不会被重新编译的文件覆盖。

vim userpatches/config-default.conf
IGNORE_UPDATES="yes"

按照用户手册进行全编译 执行: sudo ./build.sh

生成镜像文件后使用工具烧录。

三,修改烧录uboot

使用命令单独编译 uboot kernel

sudo ./build.sh BOARD=orangepi5pro BRANCH=legacy BUILD_OPT=u-boot KERNEL_CONFIGURE=no
sudo ./build.sh BOARD=orangepi5pro BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no

wifi 连接

sudo nmcli dev wifi connect “xxxx” password "xxxx"

发送编译结果到目标开发版

scp  u-boot/v2017.09-rk3588/u-boot.itb orangepi@192.168.0.22:/home/orangepi/

目标开发版执行uboot写入:

dd if=/home/orangepi/u-boot.itb of=/dev/mmcblk1 seek=16384  conv=notrunc status=none
dd if=/home/orangepi/idbloader.img of=/dev/mmcblk1 seek=64 conv=notrunc status=none

重启查看log修改生效。

四,修改测试

修改文件添加uboot命令,用来控制led灯状态。

u-boot/v2017.09-rk3588/cmd/test.c

static int do_myled(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
        int ret = 0;
        /*
        gpio bank*32 + group *8 + x
        pwm_led0 = gpio1_c2_d = 1*32 + 2*8 + 2 = 50
        pwm_led1 = gpio1_c6_d = 1*32 + 2*8 + 4 = 54
        */
        int gpio = 0;
        int on = 0;
        if(strncmp("led1",argv[1],strlen("led1")) == 0)
                gpio = 50;
        else if(strncmp("led2",argv[1],strlen("led2")) == 0)
                gpio = 54;
        else
        {
                printf("err argv\n");
                return -1;
        }
        if(strncmp("on",argv[2],strlen("on")) == 0)
                on = 1 ;
        if(strncmp("off",argv[2],strlen("off")) ==0 )
                on = 0 ;

        printf("gpio = %d on = %d\n",gpio,on);
        ret = gpio_request(gpio, "myled_gpio");
        if (ret) {
                printf("gpio: requesting pin failed\n");
                return -1;
        }
        gpio_direction_output(gpio,on);
        gpio_free(gpio);
        return 0;
}

U_BOOT_CMD(
        myled,   CONFIG_SYS_MAXARGS,     1,      do_myled,
        "turn on/off led",
        NULL
);

编译后烧录uboot.重启Ctrl+c停在uboot下

输入命令:

myled led1 on

myled led2 on

myled led1 off

myled led2 off

RGB灯会出现颜色变化。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值