arm-从0开始刷机(linux下)-程序员宅基地

技术标签: shell  linux  

环境

开发板:九鼎s5pv210_3s

部分资料来源于九鼎科技官方与朱有鹏老师课件资料

1.操作系统:deepin 5.3.15

2.代码编辑器:Visual Studio Code

3.交叉编译工具链安装

版本:arm-2009q3.tar.bz2
方法:

sudo tar -jxvf 文件名 
#即可解压到当前文件夹

复制到:/usr/local/arm
工具链的使用目录为:/usr/local/arm/arm-2009q3/bin
在上述目录创建链接脚本

ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line
ln arm-none-linux-gnueabi-ar -s arm-linux-ar
ln arm-none-linux-gnueabi-as -s arm-linux-as
ln arm-none-linux-gnueabi-c++ -s arm-linux-c++
ln arm-none-linux-gnueabi-c++filt -s arm-linux-c++filt
ln arm-none-linux-gnueabi-cpp -s arm-linux-cpp
ln arm-none-linux-gnueabi-g++ -s arm-linux-g++
ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc
ln arm-none-linux-gnueabi-gcc-4.4.1 -s arm-linux-gcc-4.4.1
ln arm-none-linux-gnueabi-gcov -s arm-linux-gcov
ln arm-none-linux-gnueabi-gdb -s arm-linux-gdb
ln arm-none-linux-gnueabi-gdbtui -s arm-linux-gdbtui
ln arm-none-linux-gnueabi-gprof -s arm-linux-gprof
ln arm-none-linux-gnueabi-ld -s arm-linux-ld
ln arm-none-linux-gnueabi-nm -s arm-linux-nm
ln arm-none-linux-gnueabi-objcopy -s arm-linux-objcopy
ln arm-none-linux-gnueabi-objdump -s arm-linux-objdump
ln arm-none-linux-gnueabi-ranlib -s arm-linux-ranlib
ln arm-none-linux-gnueabi-readelf -s arm-linux-readelf
ln arm-none-linux-gnueabi-size -s arm-linux-size
ln arm-none-linux-gnueabi-sprite -s arm-linux-sprite
ln arm-none-linux-gnueabi-strings -s arm-linux-strings
ln arm-none-linux-gnueabi-strip -s arm-linux-strip

执行脚本,注意权限(此时就创建好了符号链接)
添加环境变量:

#在当前终端下导出,关闭终端无效
export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
#~/.bashrc中,添加,仅当前用户有效
export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
#所有用户永久添加环境变量:
  编辑/etc/profile文件 vim /etc/profile    <<---- 通过这种方式,在关闭shell后,添加的环境变量不生效
  文件末尾添加:
  export PATH="/目录/:$PATH"
 shell执行 `source  /etc/profile`没有错误则添加成功

交叉编译工具链安装完成

4.安装minicom

minicom是用来做串口通信的

#可以先搜索一下
#sudo apt search xxx软件
sudo apt install xxx软件

安装好了进行配置:

sudo minicom -s

配置传口(看具体情况)/dev/ttyUSB0
注意要关闭流控,否则电脑按键无反应
需要安装CH340驱动—》》 OK传送门

sudo apt-get install linux-headers-$(uname -r)

编译、烧写UBOOT

UBOOT文件详解与配置—》》传送门
UBOOT移植------------------》》传送门

编译uboot

uboot来源:开发板资料t_x210v3s_160307.tar里的uboot文件
配置生成

make x210_sd_config
#得到Configuring for x210_sd board...表示配置成功

编译:直接make
生成了文件:
uboot
uboot.bin

擦除开发板iNand中的uboot的方法(使用串口,如果需要)
	在linux和android系统下,擦除uboot的方法:
	busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
	sync
	在uboot底下如何擦除uboot:movi write u-boot [一个没用的内存地址,如0x30000000]

linux下sd卡下载uboot

(linux下也可以DNW刷机使用usb下载)
首先插上sd卡,确认路径
ls /dev/
查看多了哪个设备
我这里是mmcblk0和mmcblk0p1
运行烧写脚本如nand_fusing.sh

sudo ./nand_fusing.sh /dev/mmcblk0
#nand_fusing.sh
# Copyright (C) 2010 Samsung Electronics Co., Ltd.
#              http://www.samsung.com/
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
####################################
reader_type1="/dev/sdb"
reader_type2="/dev/mmcblk0"

if [ -z $1 ]
then
    echo "usage: ./nand_fusing.sh <SD Reader's device file>"
    exit 0
fi

if [ $1 = $reader_type1 ]
then 
    partition1="$11"
    partition2="$12"
    partition3="$13"
    partition4="$14"

elif [ $1 = $reader_type2 ]
then 
    partition1="$1p1"
    partition2="$1p2"
    partition3="$1p3"
    partition4="$1p4"

else
    echo "Unsupported SD reader"
    exit 0
fi

if [ -b $1 ]SD Reader's device file
then
    echo "$1 reader is identified."
else
    echo "$1 is NOT identified."
    exit 0
fi

####################################
# make partition
echo "make sd card partition"
echo "./sd_fdisk $1" 
./sd_fdisk $1 
dd iflag=dsync oflag=dsync if=sd_mbr.dat of=$1 
rm sd_mbr.dat
 
####################################
# format
umount $partition1 2> /dev/null
umount $partition2 2> /dev/null
umount $partition3 2> /dev/null
umount $partition4 2> /dev/null

echo "mkfs.vfat -F 32 $partition1"
mkfs.vfat -F 32 $partition1

#echo "mkfs.ext2 $partition2"
#mkfs.ext2 $partition2  

#echo "mkfs.ext2 $partition3"
#mkfs.ext2 $partition3  

#echo "mkfs.ext2 $partition4"
#mkfs.ext2 $partition4  

####################################
# mount 
#umount /media/sd 2> /dev/null
#mkdir -p /media/sd
#echo "mount -t vfat $partition1 /media/sd"
#mount -t vfat $partition1 /media/sd

####################################
#<BL1 fusing>
bl1_position=1
uboot_position=49

echo "BL1 fusing"
./mkbl1 ./uboot.bin SD-bl1-8k.bin 8192
dd iflag=dsync oflag=dsync if=SD-bl1-8k.bin of=$1 seek=$bl1_position
rm SD-bl1-8k.bin

####################################
#<u-boot fusing>
echo "u-boot fusing"
dd iflag=dsync oflag=dsync if=./uboot.bin of=$1 seek=$uboot_position

####################################
#<Message Display>
echo "U-boot image is fused successfully."
echo "Eject SD card and insert it again."

以上应有具体分析----》》占位
最关键的烧写脚本

#!/bin/sh
sudo dd iflag=dsync oflag=dsync if=烧写镜像名 of=/dev/sdb seek=1

uboot启动后一定要先执行一次fdisk -c 0 进行分区
uboot中要设置bootcmd和bootargs给内核传参
set bootcmd ‘movi read kernel 30008000;bootm 30008000’
set bootargs console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
save进行保存

刷机

uboot设置完成并正常启动后,可以用fastboot进行刷机

#linux先安裝 android-libadb
sudo apt install android-libadb
#进行安装fastboot
sudo apt install fastboot

连接好usb(win下要安装驱动)
uboot下输入fastboot命令

#查看连接的设备
fastboot devices
#SMDKC110-01	fastboot
#烧录命令
fastboot flash xxx
#重启设备
fastboot reboot

烧写以下文件

#烧写uboot,分区可在uboot下看到
fastboot flash bootloader 烧写镜像pathname
#烧写内核
fastboot flash kernel 烧写镜像pathname
#烧写系统
fastboot flash system 烧写镜像pathname

执行fastboot reboot重启

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012376741/article/details/106799386

智能推荐

利用python实现对连续特征的分箱操作(数据离散化)_连续性数据分箱方法-程序员宅基地

文章浏览阅读5.7k次。1. 数据分箱1.1 等区间分箱将连续变量的值进行获取,然后利用pandas的cut函数进行等区间分箱。如下代码,获取值A2_values ,并等数值区间分为6类为[0,1,2,3,4,5];(cut在操作时,统计了一维数组的最小、最大值,得到一个区间长度,因为需要划分6个区间)1.2 等频分箱将连续变量在[min,max]区间内,等数量地进行分箱。1.3 卡方分箱法(ChiMe..._连续性数据分箱方法

时序动作检测SSAD《Single Shot Temporal Action Detection》-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏29次。温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!时序动作分类:识别一段视频中的动作类别时序动作检测:识别一段视频中的动作类别以及动作的开始和结束时间时空动作检测:识别一段视频中的动作类别、动作的开始和结束时间,以及动作发生的空间位置(如投篮人所在的bbox)时序动作检测可以被看做是时序版本的图像目标检测,因为两者都是需要检测目标的类别,并且都需要确定目标的准确边界位置。detect by classifying时序动作检测方法:先使..._时序动作检测

经典算法之——解决全排列问题以及详解_排列问题的过程-程序员宅基地

文章浏览阅读3.4k次,点赞18次,收藏81次。回溯”指的是“状态重置”,可以理解为“恢复现场”,是在编码的过程中,是为了节约空间而使用的,而在递归或者深度优先中根据需要的场合来配合回溯法可以进一步对自己的代码进行优化。, n-1, n},方向都为向左。邻位对换法是全排列生成算法中的其中一种,它的换位是双向的,通过保存数字的“方向性”来快速得到下一个排列。最后以 3 开头的全排列为[3, 1, 2], [3, 2, 1];以 1 开头的全排列为[1, 2, 3], [1, 3, 2];以 2 开头的全排列为[2, 1, 3], [2, 3, 1];_排列问题的过程

强化学习(一)模型基础_强化学习模型介导系统总体结构-程序员宅基地

文章浏览阅读1.3k次。 从今天开始整理强化学习领域的知识,主要参考的资料是Sutton的强化学习书和UCL强化学习的课程。这个系列大概准备写10到20篇,希望写完后自己的强化学习碎片化知识可以得到融会贯通,也希望可以帮到更多的人,毕竟目前系统的讲解强化学习的中文资料不太多。    第一篇会从强化学习的基本概念讲起,对应Sutton书的第一章和UCL课程的第一讲。1. 强化学习在机器学习中的位置    强化..._强化学习模型介导系统总体结构

MyBatis整合Spring中间jar包 mybatis-spring-1.3.1.jar的官方下载(免费)_mybatis-spring-1.3.1.jar下载-程序员宅基地

文章浏览阅读1.8w次,点赞15次,收藏11次。官方网站:http://mvnrepository.com/artifact/org.mybatis/mybatis-spring/1.3.1官方下载的步骤: 1.点击上面的链接进入官方网站; 2.按照下面的步骤: 3.这是1.3.1的下载方式,其它类似..._mybatis-spring-1.3.1.jar下载

MEL转Python小工具 - ezMel2Python-程序员宅基地

文章浏览阅读1.4k次。下载地址(需要注册): https://www.highend3d.com/maya/script/ezmel2python-for-maya 使用方法: 下载后解压缩,将两个文件放到如下路径。 打开Maya,在Python脚本编辑器运行如下代码,即可打开翻译窗口。 窗..._ezmel2python

随便推点

R语言之决策树CART、C4.5算法_c4.5的决策树是怎么画的-程序员宅基地

文章浏览阅读1.6w次,点赞19次,收藏100次。决策树是以树的结构将决策或者分类过程展现出来,其目的是根据若干输入变量的值构造出一个相适应的模型,来预测输出变量的值。预测变量为离散型时,为分类树;连续型时,为回归树。R语言的调用函数rpart(),J48(),prune()_c4.5的决策树是怎么画的

从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念-程序员宅基地

文章浏览阅读159次。一、前言一切的谜都解开了!在写这篇随笔之前,我的心情只能用金田一每次破案后的这句台词来表达。其实从开始写Java代码以来,遇到过无数次乱码与转码问题,比如从文本文件读入到..._java解析ansi

图片无损放大怎么做?这几种无损放大方法很简单_博客中图片放大怎么做-程序员宅基地

文章浏览阅读173次。无损放大图片还可以帮助我们在数码摄影中获得更好的结果,因为它可以增加图像的细节和清晰度,从而使得图像在观看时更加逼真和生动。给大家分享几种图片无损放大的方法,一起来学习下吧。这是一个专业的图片编辑工具,里面拥有非常全面的图片编辑功能,我们日常的图片编辑需求基本都可以在其中得以解决。3、此外,对于放大镜的形状、大小和颜色都是可以设置的,最后设置好后将图片给保存下来就可以啦,是不是非常简单方便呢。2、图片添加进来后,可以在右上角选择放大的倍数,也可以自定义倍数来设置,大家根据自己的实际需求选择就可以了。_博客中图片放大怎么做

大数据、AI“武装”企业服务:风控、检索、安全-程序员宅基地

文章浏览阅读329次。 大数据、AI“武装”企业服务:风控、检索、安全小饭桌创业课堂2017-05-06 15:26:42阅读(127)评论(0)  +- 文|吴杨可月 -- 小饭桌创业研究院出品 -  两件秘闻,将美国大数据公司Palantir从幕后推向前台——  一是,Palantir的旗下产品在整合40年的记录及海量数据并充分挖掘之后,找到了前纳斯达克主席麦道夫“庞氏骗局”的大量确凿..._企业服务+ai

Java泛型的学习和使用_java泛型需要学吗-程序员宅基地

文章浏览阅读283次。前面,由于对泛型擦除的思考,引出了对Java-Type体系的学习。本篇,就让我们继续对“泛型”进行研究:JDK1.5中引入了对Java语言的多种扩展,泛型(generics)即其中之一。1. 什么是泛型?泛型,即“参数化类型”,就跟在方法或构造函数中普通的参数一样,当一个方法被调用时,实参替换形参,方法体被执行。当一个泛型声明被调用,实际类型参数取代形式类型参数。 ..._java泛型需要学吗

在Python中,如何将一个字符串数组转换成整型数组_python 字符串数组转为整数数组-程序员宅基地

文章浏览阅读6.2k次,点赞4次,收藏12次。py1:>>> arr = ['22','44','66','88']>>> arr = map(int,arr)>>> print(arr)[22, 44, 66, 88]py2:>>> arr = ['22','44','66','88']>>> arr = list(map(int,arr))>>> print(arr)[22, 44, 66, 88]_python 字符串数组转为整数数组