嵌入式linux开发学习笔记 一

2021年底生活轨迹和工作内容都做了重大改变,换了城市,换了工作领域,工作平台和工作内容也是相差甚远。花了大概一年半的时间在学习探索熟悉新的工作内容以及工作方式。不想把原来的知识沉淀给荒废掉,所以希望记录点什么,一来好记性不如烂笔头,而来也能督促勉励自己。

linux开发板 : JZ2440, 主控:s3c2440,虽然板子有点老,但是知识是具有继承性的,还是从这里开始吧。

1.uboot 配置以及编译

 下载uboot-1.6.1源码 以及 补丁文件

1)解压: tar -xvf  uboot-1.6.1.tar.bz2  

2)打patch : cd uboot-1.6.1 

                  patch -p1 < ../u-boot-1.1.6_jz2440.patch 

                 (../ 根据实际路径而定, p1 - 忽略第一个斜杠之前的内容 也即 uboot-1.6.1的目录路径)

3)配置

    make 100ask2440_config

OBJTREE		:= $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
SRCTREE		:= $(CURDIR)
TOPDIR		:= $(SRCTREE)
LNDIR		:= $(OBJTREE)
export	TOPDIR SRCTREE OBJTREE

MKCONFIG	:= $(SRCTREE)/mkconfig
export MKCONFIG

100ask24x0_config    :    unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0 

OBJTREE        := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
SRCTREE        := $(CURDIR)
TOPDIR        := $(SRCTREE)
LNDIR        := $(OBJTREE)
export    TOPDIR SRCTREE OBJTREE

MKCONFIG    := $(SRCTREE)/mkconfig
export MKCONFIG

100ask24x0_config    :    unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0  
 等价于:
      mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0 
     
     格式为$(var:str1=str2) 将变量var中的str1用str2替换,类似于$(patsubst str1,str2,$(var))
     @$ 用在规则里表明不显示执行过程,只显示结果。
     
mkconfig:

(1).
while [ $# -gt 0 ] ; do
    case "$1" in
    --) shift ; break ;;
    -a) shift ; APPEND=yes ;;
    -n) shift ; BOARD_NAME="${1%%_config}" ; shift ;; 
    *)  break ;;
    esac
done

$# :传入的参数个数  
-gt : 大于
shift 加数字表示左移n,不加数字,默认是1
$1 : 第一个参数,即 100ask24x0

没有 -- -a -n *等元素,所以这里就什么都不做。

(2).
[ "${BOARD_NAME}" ] || BOARD_NAME="$1"   //如果没定义 BOARD_NAME,则 BOARD_NAME = 100ask24x0; note: if 前面成立,后面就不执行

(3)
[ $# -lt 4 ] && exit 1   #参数总数小于4个,exit
[ $# -gt 6 ] && exit 1   #参数总数大于6个,exit

(4)
if [ -z "$6" -o "$6" = "NULL" ] ; then
    ln -s ${LNPREFIX}arch-$3 asm-$2/arch
else
    ln -s ${LNPREFIX}arch-$6 asm-$2/arch
fi

-z :判空
-o :并且
 

4) 编译 make

此时目录下会生成一个 uboot.bin的文件 ,使用fileZlier传输到windows空间中,通过oflash烧写。

在windows上安装oflash驱动需要注意,可能会提示 目录缺少哈希值, 这里重新设置计算机重启时候选择 安装驱动时不需要数字签名即可。 可自行百度解决。百度是个好东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答你关于野火嵌入式Linux学习的问题!以下是一些学习笔记的建议: 1. 了解嵌入式系统:首先,你需要了解嵌入式系统是什么以及它们与桌面操作系统的区别。嵌入式系统通常用于特定的应用领域,例如智能家居、汽车电子和工业控制等。 2. 学习Linux基础知识:野火嵌入式Linux是基于Linux内核的操作系统,所以你需要掌握Linux的基础知识,包括文件系统、进程管理、设备驱动程序等。 3. 硬件平台了解:野火嵌入式Linux有不同的硬件平台,例如野火开发板。你需要学习如何操作和配置这些硬件平台,并了解它们的特性和限制。 4. 交叉编译环境设置:为了在PC上开发嵌入式系统,你需要设置一个交叉编译环境,以便能够编译和调试嵌入式应用程序。这涉及到安装和配置交叉编译工具链。 5. 内核定制和驱动程序开发学习如何定制Linux内核以满足特定需求,并开发设备驱动程序以支持外部硬件。 6. 应用程序开发:掌握嵌入式应用程序的开发技术,包括使用C/C++语言、Makefile和调试工具。 7. 调试和故障排除:学会使用调试工具和技术来定位和解决嵌入式系统中的问题。 8. 实际项目经验:通过参与实际的嵌入式项目或完成一些小型项目来应用你的知识和技能。 这些只是一些学习笔记的建议,野火嵌入式Linux学习需要不断的实践和探索。希望这些对你有帮助!如果你有任何进一步的问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值