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 git ssh make gcc g++ libssl-dev liblz4-tool
    sudo apt-get install expect patchelf chrpath gawk texinfo diffstat binfmt-support
    sudo apt-get install qemu-user-static live-build bison flex fakeroot cmake
    sudo apt-get install gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev 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)