xym-ee
  • 计算机与嵌入式开发学习
  • 1-1.编程基础
    • C 语言
      • C 中的数据
      • C 语言基础
      • 字符输入输出
      • 函数
      • 数组和指针
      • 字符串处理
      • 存储类别
      • 文件 I/O
      • 复杂数据类型
      • 位操作
      • 预处理和 C 库
    • 数据结构和算法入门
    • leetcode 刷算法题
      • 递归与栈
      • 二叉树与递归
      • 回溯问题
      • 动态规划 1
    • 基本工具和使用
      • shell
      • shell 脚本
      • vim 编辑器
      • 命令行数据整理
      • 命令行环境和配置
  • 1-2.计算机系统基础(CSAPP)
    • 1.计算机基础
    • 2.数据的表示
    • 3.加减运算
    • 4.乘除运算
    • 5.程序的表示转换和链接
    • 6.IA32指令
    • 7.过程调用
    • 10.程序的链接
  • 1-3.数字电路、计算机组成
    • 1.数字电路、virtual circuit board
    • 2.计算机组成/steam:Turing Complete
    • 3.微机原理与接口技术(8086)
  • 1-4.计算机网络
    • 1.从浏览器开始
    • 2.协议栈和网卡
    • 3.网络设备
    • 4.运营商、接入网
    • 5.服务器
    • 6.数据返回浏览器
    • socket编程
  • 1-5.操作系统
    • 0.绪论
      • 1.应用视角的操作系统
      • 2.硬件视角的操作系统
      • 3.数学视角的操作系统
      • 4.状态机模型的应用
    • 1.并发
      • 1.并发 bug 的解决思路
      • 2.互斥
      • 3.同步
      • 4.信号量
      • 5.真实并发
      • 6.调试技巧
      • 7.os kernel 实现
    • 2.虚拟化
      • 1.操作系统上的进程
      • 2.进程的地址空间
      • 3.系统调用和unix shell
      • 4.C 标准库的实现
      • 5.linux 操作系统
      • 6.可执行文件和加载
      • 7.动态链接和加载
      • 8.内核的实现
      • 9.fork 的应用
    • 3.持久化
      • 1.存储设备的原理
      • 2.输入输出设备模型
      • 3.设备驱动程序
      • 4.文件系统 API
      • 5.fat 和 unix 文件系统
      • 6.持久数据的可靠性
    • 总结
  • 2-1.嵌入式裸机开发
    • 嵌入式系统通信接口与协议
    • cortex-m 内核芯片裸机开发
    • MPU
  • 2-2.中等规模系统开发
    • LVGL 图形库
    • 裸机开发的软件框架
    • 基于 rtos 开发
  • 2-3.armv7-m架构与 rtos 原理
    • armv7-m 架构
    • rt-thread 内核实现
    • rt-thread 驱动开发
  • 3-1.linux 应用开发基础
  • 3-2.linux 镜像构建
    • uboot 使用
    • uboot 适配
    • uboot 启动分析
    • uboot 自定义命令
    • linux 内核适配
    • linux 内核启动分析
    • busybox 根文件系统构建
  • 3-3.linux 驱动开发
    • 驱动开发基础
    • sysfs
    • led 驱动
    • 设备树
    • pinctrl 和 gpio 子系统
    • 并发控制
由 GitBook 提供支持
在本页
  • linux 应用开发
  • linux 开发流程
  • 学习路线
  • 开发前准备,开发环境
  • NFS
  • tftp
  • POWER USER

这有帮助吗?

3-1.linux 应用开发基础

linux 应用开发

linux 使用

  • 一些工具 shell、gcc、makefile、vim

  • linux 系统编程

linux 开发流程

  • 1.开发环境

    • Linux 开发主机

    • 串口终端调试工具(开发板控制台)

    • NFS 服务(传输文件)

  • 2.bootloader

    • 根据开源的代码修改芯片

    • 编译烧录

  • 3.linux kernel

    • 根据芯片供应商提供的源码修改

  • 4.建立根文件系统

  • 5.添加设备驱动程序

  • 6.开发应用程序

学习路线

  • linux 驱动

  • linux 移植

应用开发,比如多线程、网络开发,shell 脚本,基本的 linux 使用之类的,放到计算机的学习笔记里,这里只记录和嵌入式强相关的。

野火的开发板为实验板。

传统的linux的学习路线

  • linux + c 进阶

  • arm 裸机开发

  • linux 移植(boot,kernel,文件系统)

  • linux 驱动开发

  • linux 应用开发

  • 项目实战

很系统,周期也很长。

基础很重要。linux 内核使用的是 GNU C ,和 C99 还是有区别的。此外写单片机时的面向过程的思维,如果还用这个思路去研究内核代码,也会很难懂。

开发前准备,开发环境

虚拟机+ubuntu

  • vmware workstation

  • ubuntu

    • 安装 vmware-tools :开源 sudo apt install open-vm-tools-desktop

交叉编译环境

嵌入式处理器,arm 架构,性能相比x86桌面处理器还是有差距,因此在 x86 上将源代码编译为 arm 架构上的可执行文件。

通过局域网,将 pc 上的工作目录以 nfs 形式挂载到开发板。

首先,开发主机,工具链,在 x86 平台,一些开发用到的和机器相关的东西

  • gcc

  • binutils 工具集

    • readelf

    • objdump

  • glibc 库

NFS

主机安装

  • sudo apt install nfs-kernel-server

  • sudo vim /etc/exports 配置要共享的文件夹,增加配置项

    • /home/xym/ws_linux *(rw,sync,no_root_squash)

      • /home/xym/ws_linux 目录

      • * 所有网段,也可设置为 10.0.0.0/24 指定网段

      • rw 可读可写

      • sync 同步缓存

      • no_root_squash 访问者给 root 权限

  • sudo /etc/init.d/nfs-kernel-server restart 重启一下 nfs 服务

  • showmount -e 可以看到挂载的共享目录

开发板挂载共享文件系统

  • mount -t nfs 10.0.0.22:/home/xym/ws_linux /mnt

  • mount -t nfs -o nolock,nfsvers=3 10.0.0.22:/home/xym/ws_linux /mnt

tftp

uboot里用来加载 内核等到 DDR 中

  • sudo apt install xinetd

  • 若无/etc/xinetd.conf文件,新建一个,内容在后面

  • sudo apt install tftp-hpa tftpd-hpa

  • 配置共享文件夹 sudo vim /etc/default/tftpd-hpa

    • 第三行,改成需要共享的文件夹

# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/

defaults
{

# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info

}

includedir /etc/xinetd.d

POWER USER

The Missing Semester of Your CS Education 中文版

终端代理

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
上一页rt-thread 驱动开发下一页3-2.linux 镜像构建

最后更新于9个月前

这有帮助吗?

野火i.MX6ULL Linux开发板资料下载链接合集
野火EBF6ULL 硬件资料
6ULL开发板开发文档
开发板快速使用手册
Linux基础与应用开发
Linux驱动开发
Linux镜像构建与部署
计算机教育中缺失的一课