华清远见嵌入式学习day27——编译工具和环境搭建

2023-05-16

0、系统移植四天课程安排
    1. 编译工具,环境搭建
    2. bootloader
    3. kernel
    4. 文件系统

1、嵌入式系统的应用领域
    1. 军事
    2. 医疗
    3. 移动设备
    4. 家电
    5. 工控

2、什么是嵌入式系统
    一般的定义:  以计算机技术为基础,以应用为中心,软硬件
    可裁剪的,对功能,功耗,成本,体积有一定要求的计算机。
    广泛的定义: 一般只要带有微控制器的软硬件设备,就称之为
    一个嵌入式系统

3、嵌入式系统主要硬件
    1. 微控制器 
    2. 晶振 
    3. 外存: 掉电不丢失, norflash  nandflash 
            SD eMMC 磁盘,磁带,软盘
    4. 内存: 内存颗粒   掉电丢失 
    5. I/O设备: 传感器, 

4、嵌入式系统软件组成
    带操作系统的
        linux  vxworks unix 
        freeRTOS
    bootloader                    bios    uboot 
    kernel      --- linux            window 
    rootfs   ---  文件系统        ntfs   ext4  jiffs 
    
    不带操作系统的

5、基本概念:本地开发和交叉开发
    1. 本地开发 gcc 
    直接运行在  Ubuntu
    2, 交叉开发
         宿主机上  PC机  编辑 编译
        在 目标机 开发板上 运行    

6、安装交叉编译工具链
    获取方式: 
        1. 官方下载源码
            http://mirrors-usa.go-parts.com/gcc/releases/
           下载工具 crosstool-ng
            http://ymorin.is-a-geek.org/download/crosstool-ng/  4.9.4
        2. 芯片厂家提供(推荐)
            bootloader  linux kernel  交叉编译工具链

    编译工具 配置
        1. export PATH=$PATH:/opt/gcc-4.5.1/bin
            当前终端立即有效
        2. 修改 sudo vi /etc/profile  /etc/bash.bashrc
            当有用户登录时 执行
        3. 修改 vi  ~/.bashrc
            重启终端有效

7、编译流程回顾
    
    gcc -E a.c -o a.i    展开宏定义, 
                    展开头文件 
                不判断语法错误
    cpp
            
    gcc -S a.i -o a.s      汇编  检查语法错误
        将C转换为 汇编代码1
        
    cc -S a.i -o a.s
    
    gcc -c a.s -o a.o     编译
        汇编程序 编译为 目标文件
    as -c a.s -o a.o
    
    gcc a.o -o a.out  链接
    
32位    ld -dynamic-linker /lib/ld-linux.so.2 -o hello /usr/lib/i386-linux-gnu/crt1.o 
    /usr/lib/i386-linux-gnu/crti.o /usr/lib/i386-linux-gnu/crtn.o  a.o  -lc
64位    ld -dynamic-linker /lib/ld-linux.so.2 -o hello /usr/lib/x86_64-linux-gnu/crt1.o 
    /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crtn.o  a.o  -lc

8、    其他一些工具    
    man objdump 

    readelf  读取格式头,     
        大小端, 什么架构, 
        readelf -h a.out 
        
    size  读取 段大小
        text       data        bss        dec        hex    filename
        1112        292         12       1416        588    a.out
        size  a.out

    objcopy
        格式转换命令
        objcopy -O binary  a.out a.bin

    objdump      编译加上 -g  反汇编命令
        gcc a.c -g -o hello
        objdump -D -S hello  > a.s

    nm    编译加上 -g
        T/t        代码段
        D/d        数据段
        B/b        bss 段
        R/r        只读数据段
        大写表示非静态  static 小写
        nm a.out

    addr2line        编译加上 -g
        dmesg 
[33500.832598] a.out[38169]: segfault at 0 ip 0000000000400548 sp 00007ffd58c00c10 error 6 in a.out[400000+1000]
        addr2line -e a.out  地址值
    地址转换为 代码行号

    strip   瘦身
        strip a.out 
    
    strings  不需要 加 -g 
        strings a.out 
        提起 程序中的 字符串 

9、tftp 服务器安装
    软件是否安装
    dpkg -s tftpd-hpa 
    保证 网络通
    apt-get install tftpd-hpa         服务器
    
    
    sudo vi /etc/default/tftpd-hpa
    1 # /etc/default/tftpd-hpa
    2 
    3 TFTP_USERNAME="tftp"
    4 TFTP_DIRECTORY="/home/sky/tftpboot"
    5 TFTP_ADDRESS=":69"
    6 TFTP_OPTIONS="-l -c -s"
    
    chmod 777 tftpboot/ -Rf
    
    sudo service tftpd-hpa restart  重启服务
    
    --------------------- 自测试
    apt-get install tftp-hpa     客户端
    
    sky@sky:~$ tftp 127.0.0.1
    tftp> get uImage                // 从服务器下载
    tftp> put a.c                    // 上传服务器
    tftp> q


10、测试使用tftp服务给开发板下载代码

    FS6818# printenv
    FS6818# prin
baudrate=115200
bootargs=root=/dev/nfs nfsroot=192.168.8.3:/home/sky/rootfs rw console=/dev/ttySAC0,115200 init=/linuxrc ip=192.168.8.4
bootcmd=tftp 0x41000000 uImage; bootm 0x41000000
bootdelay=3
bootfile=uImage
ethact=dwmac.c0060000
ethaddr=11:22:33:44:55:66
ethprime=RTL8211
filesize=0
gatewayip=192.168.8.1            网关
ipaddr=192.168.8.4                开发板的IP地址
netmask=255.255.255.0            子网掩码
serverip=192.168.8.3            服务器的IP地址
stderr=serial
stdin=serial
stdout=serial    
    
    0. 网线查到 电脑上
    1. 设置相应网卡 100M 全双工
    2. 虚拟机 vmware 桥接到 相应网卡
    3. 设置,自定义到 VMnet0
    4. 右上角网络图标, 设置手动IP , serverip(192.168.8.3)

    FS6818# ping 192.168.8.3
    host 192.168.8.3 is alive   说明 网络好了
    4000 0000   ~  8000 0000
    
    FS6818# tftpboot 41000000 uImage
    FS6818# tftp 41000000 uImage
    FS6818# set gatewayip 192.168.8.1
    FS6818# bootm 41000000                // 启动linux内核

11、 nfs服务的安装 Network File System
    下载安装软件 
    1. sudo apt-get install  nfs-kernel-server
    2. sudo vi /etc/exports 
      /home/sky/rootfs/  *(rw,sync,no_subtree_check,no_root_squash)
    3. sudo service nfs-kernel-server restart
        修改 完配置文件 需要 重启服务
    
    ------------自检测
    mkdir -p  /mnt/nfs  创建挂载点
    
    sudo mount -t nfs  127.0.0.1:/home/sky/rootfs   /mnt/nfs

    -------------------------------------

12、 开发阶段操作系统部署 

    1. FS6818# set bootargs "root=/dev/nfs nfsroot=192.168.8.3:/home/sky/rootfs rw console=/dev/ttySAC0,115200 init=/linuxrc ip=192.168.8.4"
    2. 在 Ubuntu  解压 rootfs.tar.xz 到 /home/sky/rootfs/ 
    3. FS6818# tftp 41000000 uImage
    4. FS6818# bootm 41000000 


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华清远见嵌入式学习day27——编译工具和环境搭建 的相关文章

随机推荐

  • cef浏览器加载过程实测ILoadHandler和IRequestHandler

    针对方法GetResourceRequestHandler 获取资源请求过程中 会多次发生请求 不知道何时加载完的问题 IRequestHandler 没有了OnResourceLoadComplete 和OnBeforeResourceL
  • cefsharp监控鼠标点击及键盘按键事件,并定义“热键”源码

    cefsharp浏览器 xff0c 支持组合键检测 xff08 监控 xff09 xff0c 通过ctrl 43 回车 xff0c 弹出打开网址的输入对话框 核心代码如下 第一步在 xxx FrameLoadEnd事件中注册监听事件 xff
  • cefsharp-winform一键网页快照invokeCapture完美实现(源码及知识点)

    实现这个功能查找了几乎所有材料 都没法完全系统的实现想要的功能 终于摸索成功完美实现 大概步骤 1 获取页面真实高度 并滚动到底部 需要执行js脚本 nbsp nbsp 2 模拟设备开启 手机端 需要设置几个参数 宽高和deviceScal
  • cefsharp升级最新包108.4.130

    1 用IDM下载包文件packages 估计10来分钟 如果网速慢时间背可能会慢 https globalcdn nuget org packages cef redist x86 108 4 13 nupkg https globalcd
  • 移动开发者大会次日观感

    作者 xff1a 朱金灿 来源 xff1a http blog csdn net clever101 继续是2011移动开发者大会的观感 第二天是进行的主题论坛 xff0c 分别有下面一些主题 xff1a 开放平台与技术 产品与设计 移动游
  • cefsharp之devtools开发者工具API应用-Emulation

    这里仅介绍关键方法 xff0c 快捷键根据自己爱好定义 1 一键设置禁用 启用Javascript 核心代码 参数true禁用 xff0c false启用 xff0c sel webbrowser为你的浏览器 await sel webbr
  • CefSharp.WinForms-109.1.110升级

    包升级地址 NuGet Gallery CefSharp WinForms 109 1 110 NuGet Gallery CefSharp Common 109 1 110 NuGet Gallery cef redist x64 109
  • ESP32S2(12K)-DS18B20数码管显示温度

    一 物料清单 NODEMCU 32 S2 ESP32 12K 四段数码管 共阴 DS18B20 VCC DQ GND Arduino IDE 2 0 3 二 实现方法及效果图 2 1 引用库 include lt OneWire h gt
  • cefsharp-物联网浏览器-升级至110.0.250

    基于cefsharp二次开发的物联网浏览器升级最新版 110 0 250 暂不支持H264功能 一款属于自己的浏览器 支持H264的最新版本100 0 230 更多功能了解 关注我
  • 德赛西威NAV75*-SV731*导航升级(凯立德J30)实战

    一 前言 xff1a 升级导航德赛西威 xff08 2015年买的 xff09 地图几年没升级过了 xff08 之前自己折腾了一个 xff09 之前的启动是DSA2013 xff08 电子G已经无法升级数据文件了 xff0c 本次只升级地图
  • 网络串口调试助手(串口透传网络调试)

    一 前言 xff1a 1 本地串口调试同步到网络 xff08 可以远程实时查看发送 串口打印数据 xff09 2 远程直接发送串口调试指令透传到串口设备 3 通讯协议MQTT 43 WebSocket 串口 二 效果展示 网络客户端 xff
  • log4net(winform)使用方法

    前言 xff1a log4net是 Net下一个非常优秀的开源日志记录组件 log4net记录日志的功能非常强大 它可以将日志分不同的等级 xff0c 以不同的格式 xff0c 输出到不同的媒介 第一步 xff1a 引入组件 xff1a 引
  • cefsharp111.2.20(winform)版本体验

    第一步 xff1a 更新步骤 xff1a 先下载再本地更新会快一点 https globalcdn nuget org packages cefsharp winforms 111 2 20 nupkg https globalcdn nu
  • CefSharp.WinForms 112.2.70最新版体验

    一 准备 下载最新包及依赖包 对应 NET4 5 2 后续版本可能4 6 2 到packages中 本地升级更快 NuGet Gallery CefSharp WinForms 112 2 70 NuGet Gallery CefSharp
  • VUE3(.NET6)管理后台

    基于Admin NET框架 xff0c 预览下效果 内置功能 主控面板 xff1a 控制台页面 xff0c 可进行工作台 xff0c 分析页 xff0c 统计等功能的展示 用户管理 xff1a 对企业用户和系统管理员用户的维护 xff0c
  • 2011年养成的一个工作习惯

    作者 xff1a 朱金灿 来源 xff1a http blog csdn net clever101 有一句名言 xff0c 没有记录的公司 xff0c 迟早要垮掉的 xff0c 多么尖锐 个人也不是如此吗 xff1f 在下半年 xff0c
  • Cefsharp.WinForms-v112.3.0 带您最新版体验(小更新)

    一 准备 下载最新包及依赖包 对应 NET4 5 2 后续版本可能4 6 2 到packages中 本地升级更快 NuGet Gallery CefSharp WinForms 112 3 0 NuGet Gallery CefSharp
  • 无人机飞行控制算法、控制律设计软件与半物理仿真

    工业级多功能可编程飞行控制系统专业的图形化控制律设计软件灵活强大的工程应用开发平台DSP处理器及高精度传感器自定义高速遥测数据采集嵌入式半物理仿真系统丰富的用户设备接口适用于固定翼 旋翼机 特殊飞行器 车船艇 机器人 云台等 概 述 xff
  • 程序调试记录

    最近把师兄的程序在万兆网络上进行测试 xff0c 现在把调试中出现的问题进行记录 xff1a 1 xff09 其中一共是十六块板子 xff0c 板子的配置文件是sipixel xml xff0c 每块板子的配置信息里都有对应的IP xff0
  • 华清远见嵌入式学习day27——编译工具和环境搭建

    0 系统移植四天课程安排 1 编译工具 xff0c 环境搭建 2 bootloader 3 kernel 4 文件系统 1 嵌入式系统的应用领域 1 军事 2 医疗 3 移动设备 4 家电 5 工控 2 什么是嵌入式系统 一般的定义 xff