- 2023-01-04
-
回复了主题帖:
感谢一路相随!——EEWorld 2022年度人物颁奖
恭喜恭喜
- 2022-10-21
-
发表了日志:
4.【记录】Com335X:手动制作SD卡启动盘
-
发表了主题帖:
4.【记录】Com335X:手动制作SD卡启动盘
Com335X:手动制作SD卡启动盘
开始准备条件:
* Com335x评估板(含电源线,串口调试线,网线)
* PC一台,带串口和网口。
* 网络Hub一个,或者PC和Com335x能接入同一个局域网即可。
* SD卡一张(容量小于16G,以8G最好)。
1、在PC机上打开并启动Linux操作系统。
2、将资料中emmc文件夹下的sd-boot.tar.gz、sd-rootfs.tar.gz以及creat-sdcard.sh文件拷贝到Linux操作系统中的一个目录下(可使用FileZilla Client进行Window和Linux互传文件),笔者这里将放在/home/liping/linux/evb335x/emmc/tf_linux目录下。
(注意:其中 sd-boot.tar.gz是包括了MLO、u-boot.img、uImage、logo.bmp、uEnv.txt文件的压缩包,sd-rootfs.tar.gz则是文件系统源码的压缩包,creat-sdcard.sh是制作TF卡启动盘的脚本文件。)
3、将SD卡通过读卡器接入电脑并连接到linux操作系统中,此时linuxx系统会自动挂载SD卡,笔者的SD卡有两个分区如图所示:(注意:尽量选择稳定的SD卡和读卡器,否则在制作SD卡启动盘过程中,SD卡可能会自动卸载再挂载,导致制作过程出错。)
4、先umount SD卡的分区
$ umount /media/liping/boot
$ umount /media/ liping/rootfs
注意:卸载时,通过查看挂载的SD卡属性来看挂载在哪里,不能使用/dev/sdb1和/dev/sdb2进行umount,否则会出错。可以使用mount命令或者ls /dev/sd*来查看挂的设备有哪些。
5、对SD卡进行分区
$sudo fdisk /dev/sdb
1)输入选项m并按下回车,列出fdisk命令列表:
主要命令说明:
1. 输入 m 显示所有命令列示。
2. 输入 p 显示硬盘分割情形。
3. 输入 a 设定硬盘启动区。
4. 输入 n 设定新的硬盘分割区。
5. 输入 e 硬盘为[扩展]分割区(extend)。
6. 输入 p 硬盘为[首要]分割区(primary)。
7. 输入 t 改变硬盘分割区属性。
8. 输入 d 删除硬盘分割区属性。
9. 输入 q 结束不存入硬盘分割区属性。
10. 输入 w 结束并写入硬盘分割区属性。
11. 输入x 进入扩展命令模式。
输入命令 p ,查看SD卡具体详细:
从上面的信息看,当前的SD卡总共有7.5GB,8053063680字节,15728640个扇区,并且有两个分区(这是笔者之前分好的,这些信息会根据自己的情况而定)。
2)删除所有的SD卡分区,输入命令 d,并依次输入要删除的分区号:
3)如果SD卡不是255 heads,63 sectors/track,按照以下步骤建立扇区:
输入命令扩展命令x,然后输入m,输出扩展命令列表:
然后输入命令 h,改变磁头为255:
接着输入命令 s,改变扇区为63:
接着输入命令 c,改变柱面为979:
输入命令 r,返回普通命令页面:
输入命令 p,显示SD卡信息:
4)输入命令 n,建立第一个分区(大小5G),其中空白区命令表示ENTER键:
按照提示依次输入命令:n—>p—>1—>2048—>+5G
改变分区属性,输入命令t,并且选择第一分区,输入分区类型码 c(注:c为W95 FAT32 (LBA)):
标记第一个分区为启动盘,输入命令 a 后选择分区1:
4)输入命令 n,建立第二个分区(大小为SD卡剩余空间大小),其中空白区命令表示ENTER键:
按照提示依次输入命令:n—>p—>2—>10487808—>ENTER键
5)输入 p,查看分区情况:
6)输入命令 w,保存并写入SD卡分区属性
至此,SD卡分区完毕。
接下来进行分区格式化,此时先卸载SD卡,然后重新插入到linux系统中:
6、格式化SD卡分区
1)将第一个分区格式化为FAT32格式,并将卷标设为为“boot”(注:卷标可自定义)
$ sudo mkdosfs -F 32 /dev/sdb1 -n boot
2)将第二个分区格式化为ext4格式,并将卷标设为为“rootfs”(注:卷标可自定义。此操作会消耗一点时间,请耐心等待操作完成)
$ sudo mkfs.ext4 -L rootfs /dev/sdb2
至此,SD卡分区格式化完成。可将SD卡拔出后重新插入电脑,待Linux重新识别和自动挂载SD卡。
7、拷贝系统启动文件和根文件系统到SD卡
1)进入到存放文件的目录中:
$ cd linux/evb335/emmc/tf_linux/
2)将准备好的系统启动相关文件(MLO、u-boot.img、uImage等)拷贝到boot分区,以系统启动文件放在/home/liping/linux/evb335/emmc/tf_linux/sd-boot/目录下为例:
$ sudo cp /home/liping/linux/evb335/emmc/tf_linux/sd-boot/* /media/liping/boot/
3)将准备好的根文件系统文件拷贝到rootfs分区,以根文件系统放在/home/liping/linux/evb335/emmc/tf_linux/sd-bootfs目录下为例:
$ sudo cp /home/liping/linux/evb335/emmc/tf_linux/sd-rootfs/* /media/liping/rootfs/ -a
注:若没有sd-toorfs文件夹,可以按如下命令进行创建并解压文件:
$ mkdir sd-rootfs
$ sudo tar -xvf sd-rootfs.tar.gz -C /home/liping/linux/evb335/emmc/tf_linux/sd-rootfs/
解压完毕后:输入以下命令查看:
$ cd sd-rootfs
$ ls
至此,SD卡启动盘制作完成。如果此时系统仍不能从SD卡启动,请在windos系统下将SD卡第一个分区格式化为FAT32,请勿选择快速格式化!然后重新拷贝系统启动文件到SD卡第一个分区即可。
特别说明:为了能够在使用SD卡启动后,通过输入命令将制作emmc启动盘,我们在制作SD卡启动盘的时候,将根文件系统sd-rootfs/emmc/文件下的emmc-rootfs在linux系统下进行解压:
$ cd sd-rootfs/emmc/
$ ls
注:若没有emmc文件下没有emmc-toorfs文件夹,可以按如下命令进行创建并解压文件:
$ mkdir emmc-rootfs
$ sudo tar -xvf rootfs_emmc_qt_cap_nologin_evb335xii.tar -C /home/liping/linux/evb335/emmc/tf_linux/sd-rootfs/emmc/emmc-rootfs/
- 2022-10-13
-
发表了日志:
3.【记录】GCC编译器必须安装的两个库文件
-
发表了主题帖:
3.【记录】GCC编译器必须安装的两个库文件
在使用gcc编译u-boot内核时,总是报错,例如:
scripts/Makefile.host:118: recipe for target 'scripts/basic/fixdep' failed
Makefile:381: recipe for target 'scripts_basic' failed
看网上的教程,写的也解决不了问题,后来发现,必须安装两个文件才可以:
ncurses库:sudo apt-get install libncurses5-dev
标准库:sudo apt-get install lsb-core lib32stdc++6
按上述命令,安装完成后输入编译u-boot,正常运行。
依次输入一下命令,编译Uboot:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- XXXX
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
- 2022-09-30
-
回复了主题帖:
本人不懂电机,问一个关于三相步进电机驱动的问题!
这种驱动器市面上还真的少。我建议是买一个H桥的驱动器,三相的驱动当作单相的来控制,即公共端接固定驱动器的某一端,三相的分别接驱动的另外一端控制。
-
发表了日志:
2.【记录】解决git@gitee.com: Permission denied (publickey). Could not read fr...
-
发表了主题帖:
2.【记录】解决git@gitee.com: Permission denied (publickey). Could not read fr...
最近也不知道删除了什么,gitee突然罢工了,上传代码总是出现:
git@gitee.com: Permission denied (publickey). fatal: Could not read from remote repository.
然后呢,只有自己慢慢摸索,找到原因基本就是公钥有问题,或者被我删除了:
Permission denied (publickey) 没有权限的publickey(公锁) ,出现这错误一般是以下两种原因
(1)客户端与服务端未生成 ssh key
(2)客户端与服务端的ssh key不匹配(可能被我删除了)
找到问题的原因了,解决办法也就有了,重新生成一次ssh key ,服务端也重新配置一次即可。
开始操作:
1.客户端生成ssh key
打开git bash here软件:
输入命令1: ssh-keygen -t rsa -C "xxxx@xx.com" --注释xxxx@xx.com是自己的邮箱地址
途中会让你输入密码啥的,不需要管,一路回车即可,会生成你的ssh key。(如果重新生成的话会覆盖之前的ssh key。)然后自动生成ssh公钥:
输入命令2: ssh -v git@gitee.com
但是在最后会出现:
debug1: No more authentication methods to try.
git@gitee.com: Permission denied (publickey).
输入命令3: ssh-agent -s
获得ssh key存储的文件的路径:输入命令4: ssh-add ~/.ssh/id_rsa
此时会出现:
Could not open a connection to your authentication agent.
输入执行命令5: ssh-agent bash 即可。
再次输入命令6:ssh-add ~/.ssh/id_rsa,即可查看地址
2.配置服务端 -- gitee
打开你刚刚生成的id_rsa.pub,将里面的内容复制,进入你的gitee账号,在设置下的SSH公锁,然后将id_rsa.pub里的内容复制到Key中,完成后公锁的添加(Add SSH Key)。如果已有公锁先删掉原有的锁再添加。
3.验证SSH- KEY
输入命令7:ssh -T git@gitee.com
提示:Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. 问题就解决