1.修改ubuntu的root密码 sudo passwd root 2.vim安装 vim apt install vim 3.按照ssh服务 { sudo apt update sudo apt install openssh-server 启动ssh sudo systemctl start ssh 开机自启 sudo systemctl enable ssh 防火墙设置(可选) sudo ufw allow ssh 开启root登录 sudo vim /etc/ssh/sshd_config PermitRootLogin prohibit-password 找到这个,去掉前面的#,proht...改为yes 重启ssh sudo systemctl restart ssh } 4.换源 sudo vim /etc/apt/sources.list 将里面内容填入该文件中 { deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse } 5.开发环境搭建 sudo apt install gawk wget git diffstat unzip sudo apt install texinfo gcc-multilib build-essential chrpath socat sudo apt install libsdl1.2-dev xterm ncurses-dev lzop libelf-dev make sudo apt-get install ssh gcc g++ libssl-dev liblz4-tool sudo apt-get install expect patchelf binfmt-support sudo apt-get install qemu-user-static live-build bison flex fakeroot cmake sudo apt-get install g++-multilib device-tree-compiler libncurses5-dev 6.泰山派sdk 解压出来的.repo包执行下面命令 .repo/repo/repo sync -l -j88 如果报错:/usr/bin/env: ‘python’: No such file or director apt-get install repo 7.编译内核 ①到解压根目录下执行 ./build.sh lunch 然后选择3 tspi-v10.mk || ./build.sh device/rockship/rk356x/BoardConfig-rk3566-tspi-v10.mk ②选择buildroot系统 export RK_ROOTFS_SYSTEM=buildroot ③编译 两种选择, 编译全部:包括rootfiles,时间长(几个小时),中间易报错。 仅编译内核:学习设备树或驱动阶段够用,大概半小时,跳过视频教程的docker过程。 ./build.sh all || ./build.sh kernel 8.泰山派操作手册网址 https://lceda001.feishu.cn/wiki/Da5owUV4dipiqUkZycbcxckinvc 9.vscode ssh连接主机 root@192.168.xxx.xxxx 10.瑞芯微烧录工具,分散烧录 网址:https://lceda001.feishu.cn/wiki/Da5owUV4dipiqUkZycbcxckinvc 第三章,系统SDK编译,下载,分散镜像 空白区域右键,导入 ![alt text](image.png) 11.编译好后 ./mkfirmware.sh //将各种镜像复制到rock那个文件夹下 ./build.sh updateimg 12.rockdev文件夹中会生成update.img ![alt text](image-1.png) 13.adb 连接(单独烧录跳转18点) 烧录好后,设备会被识别为adb设备。 这个时候,可以通过adb连接调试 ![alt text](image-2.png) 14.设备树文件 立创给我们定好了一个用户设备树 tspi-rk3566-user-v10-linux.dts ![alt text](image-3.png) 15.驱动文件 立创给我们定好了一个led驱动 leds-gpio.c ![alt text](image-4.png) 16.驱动和设备配对 通过compatible与设备树配对 ![alt text](image-5.png) 17.新增驱动,并编译 将这两个文件,放到leds-gpio.c同级目录下 ![img.png](img.png) 然后到linux中执行, ./build.sh kernel 如果出现下面的这一行,说明编译成功。否则驱动有错误,请检查 ![img_1.png](img_1.png) 18.烧录(单独烧录,适用于只编译linux kerenl(如wsl环境))(注意:烧录的是boot.img,不是uboot.img,吃了很多亏) 第12步,已经生成update.img 同时也生成了boot.img ![img_5.png](img_5.png) 将这个文件复制出来。 按图所示,勾选这一栏,并选择你刚刚复制出来的boot.img ![img_2.png](img_2.png) 如果烧录过update.img。会进入adb模式。 长按复位按钮,同事点按boot按钮,会进入loard模式。 ![img_3.png](img_3.png) 这样就可以烧录了。 由于我们的驱动目前还没有绑定设备树,也没编写自动注册驱动程序。所以,目前需要手动注册。但是手动注册不是我们目的,后续直接用设备树进行注册。 19. 注册字符设备驱动 ./驱动文件/2 查看驱动是否注册成功 ![img_4.png](img_4.png) 成功打印,字符自动注册成功了。不过,没有使用设备树进行注册。 20.字符设备驱动在系统中哪里? 根据官方文档,字符设备驱动程序在内核的drivers目录下(/dev) ![img_6.png](img_6.png) 确实在这里找到了。 ![img_7.png](img_7.png) 21.samba 文件传输 1.安装 Samba sudo apt update sudo apt install samba 2.配置共享文件夹(共享的文件路径自己定,/home/xu/linux/rockdev只是我本地的路径) sudo mkdir -p /home/xu/linux/rockdev(创建文件夹) sudo chown nobody:nogroup /srv/samba/share sudo chmod 0777 /srv/samba/share(修改文件夹权限) 3.编辑 Samba 配置文件 sudo vim /etc/samba/smb.conf(编辑文件) 4.在文件的末尾添加以下配置,设置共享文件夹名称、路径及访问权限:(这里使用了vim编辑器) ![img_8.png](img_8.png) 5.保存并关闭配置文件后,重启 Samba 服务以应用更改: sudo systemctl restart smbd sudo systemctl enable smbd 6.在 Windows 系统中,打开文件资源管理器,在地址栏中输入: \\Linux服务器IP(\\192.168.68.130) 7.回车 就可以看到共享文件夹,这个名字就是你修改配置时候的名字 ![img_9.png](img_9.png) 点进去,就可以看到文件了 ![img_10.png](img_10.png 交换文件,可以采用这两种方法,哪种方法好,自己选择。 1.xshell+xfile 2.vscode+samba 22.编译成模块(.ko)文件 obj-m+= leds-user-defind.o 将模块导入泰山派的linux系统中 adb push xx\xx.ko /data/xx.ko 23.加载模块 1.进入adb shell cd /data 2.找到xx.ko文件 lsmod 查看已存在的module insmod xx.ko 3.lsmod 查看是否加载成功 ![alt text](image-6.png) 4.查看模块打印的数据 dmesg | grep "hello" ![alt text](image-7.png) 5.卸载模块 rmmod xx ![alt text](image-8.png) 24.probe 函数进行驱动加载 平台驱动注册函数 module_platform_driver(gpio_led_driver); 核心驱动注册函数 ![img_11.png](img_11.png) ![img_12.png](img_12.png) ![img_13.png](img_13.png) 测试结果 ![img_14.png](img_14.png) 25.probe + 字符设备驱动 1.注意: -static一定要加,否则在3566上运行不了 arm-linux-gnueabihf-gcc -o led led.c -static 2.adb push xxxx.ko /data/xxxx.ko 3.添加可执行权限 ![img_15.png](img_15.png) 4.执行 ./led 5.查看结果 ![img_16.png](img_16.png) 26.点灯大师 操作步骤参照25步 ![img_17.png](img_17.png) MP4[点灯大师.mp4]