安装相关工具(推荐使用ubuntu 16及以上版本)

sudo apt install gcc binutils bzip2 flex python perl make diffutils unzip gawk subversion zlib1g-dev quilt

下载源码

git clone https://github.com/openwrt/openwrt.git

cd openwrt

开始编译前的准备工作——更新软件包

./scripts/feeds update -a

./scripts/feeds install -a

配置 —— menuconfig

make menuconfig

Target System (Samsung s3c24xx/s5pv210) --->

Subtarget (s5pv210 based boards) --->

Target Profile (TQ210) --->

Target Images --->

[*] ramdisk --->

Global build settings --->

Kernel build options --->

[*] Compile the kernel with early printk

选择TQ210硬件平台

选择ramdisk,使用内存文件系统启动

选中内核早期调试打印

配置内核 —— make kernel_menuconfig

make kernel_menuconfig

Boot options --->

[*] Use appended device tree blob to zImage (EXPERIMENTAL)

Kernel hacking --->

[*] Kernel low-level debugging functions (read help!)

Kernel low-level debugging port (Use Samsung S3C UART 0 for low-level debug) --->

选中将dtb追加到zImage后面

根据自己的开发板选择调试串口,TQ210使用的是UART0

在这里可以把一些暂时不需要的配置选项给去掉

编译

make -j4

编译成功,我们最终需要的内核如下

bin/targets/samsung/s5pv210/openwrt-samsung-s5pv210-tq210-initramfs-kernel.bin

这里编译出来的内核是uImage格式,如果需要zImage格式,请修改target/linux/samsung/image/Makefile,将uImage none去掉

define Device/Default

PROFILES = Default

KERNEL_NAME := zImage

KERNEL := kernel-bin | append-dtb

endef

使用tftp下载内核到设备的内存直接运行

我这里使用我自己移植的barebox(一个代码风格类似Linux的Bootloader)来运行内核

barebox 2018.04.0-00135-g476dd0f26-dirty #5 Fri Apr 13 01:21:34 CST 2018

Board: Embedsky tq210

netconsole: registered as netconsole-1

dm9000 dm90000: Found DM9000B at i/o: 0x88000000

mdio_bus: miibus0: probed

nand: NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit), 1024MiB, page size: 2048, OOB size: 64

Scanning device for bad blocks

Bad eraseblock 1402 at 0x00000af40000

registered as fbconsole0

malloc space: 0x2bf00000 -> 0x2fefffff (size 64 MiB)

refclk: 24000 kHz

armclk: 1000000 kHz

a2mclk: 200000 kHz

hclk_dsys: 166750 kHz

pclk_dsys: 83375 kHz

hclk_psys: 133400 kHz

pclk_psys: 66700 kHz

running /env/bin/init...

nv variable modified, will save nv variables on shutdown

Hit m for menu or any other key to stop autoboot: 0

type exit to get to the menu

barebox@Embedsky tq210:/

使用tftp命令下载内核。Barebox支持ramfs,这里直接下载到ramfs中

barebox@Embedsky tq210:/ tftp openwrt-samsung-s5pv210-tq210-initramfs-kernel.bin

WARNING: net: warning: No MAC address set. Using random address fa:09:66:1f:1a:d7

eth0: 100Mbps full duplex link detected

T [#################################################################]

Barebox支持将文件作为命令直接执行

barebox@Embedsky tq210:/ ./openwrt-samsung-s5pv210-tq210-initramfs-kernel.bin

Image Name: ARM OpenWrt Linux-4.14.32

Created: 2018-04-13 14:09:27 UTC

OS: Linux

Architecture: ARM

Type: Kernel Image

Compression: uncompressed

Data Size: 3876720 Bytes = 3.7 MiB

Load Address: 20008000

Entry Point: 20008000

Loading U-Boot uImage './openwrt-samsung-s5pv210-tq210-initramfs-kernel.bin'

commandline: mtdparts=nand:256k(nand0.barebox),128k(nand0.bareboxenv),4M(nand0.kernel),-(nand0.rootfs)

arch_number: 0

nv variables modified, saving them

Uncompressing Linux... done, booting the kernel.

[ 0.000000] Booting Linux on physical CPU 0x0

[ 0.000000] Linux version 4.14.32 (zjh@zjh-GE60-2PL) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r6740-31293c675c)) #0 PREEMPT Fri Apr 13 14:09:27 2018

[ 0.000000] CPU: ARMv7 Processor [412fc082] revision 2 (ARMv7), cr=10c5387d

[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

[ 0.000000] OF: fdt: Machine model: Embedsky TQ210 based on S5PV210

[ 0.000000] Memory policy: Data cache writeback

[ 0.000000] CPU: All CPU(s) started in SVC mode.

[ 0.000000] random: get_random_bytes called from start_kernel+0x84/0x3c4 with crng_init=0

......

BusyBox v1.28.3 () built-in shell (ash)

_______ ________ __

| |.-----.-----.-----.| | | |.----.| |_

| - || _ | -__| || | | || _|| _|

|_______|| __|_____|__|__||________||__| |____|

|__| W I R E L E S S F R E E D O M

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

OpenWrt SNAPSHOT, r6742-c71b8121ef

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

=== WARNING! =====================================

There is no root password defined on this device!

Use the "passwd" command to set up a new password

in order to prevent unauthorized SSH logins.

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

root@OpenWrt:/#

openwrt运行linux软件,使用OpenWrt开发嵌入式Linux(二):先让系统跑起来(使用initramfs)...相关推荐

  1. 嵌入式linux软件专利,一种嵌入式Linux操作系统网络加速运行的系统及方专利_专利查询 - 天眼查...

    1.一种嵌入式Linux操作系统网络加速运行的系统,其特征在于,主要包括以下单元:应用程序单元.Lwip函数库单元.系统接口单元.Linux系统单元.底层硬件接口单元.硬件平台单元.物理硬件网络设备单 ...

  2. 免环境搭建用QT开发嵌入式Linux工业平板电脑界面

    免环境搭建如何用QT开发嵌入式Linux工业平板界面 免环境搭建如何用QT开发嵌入式Linux工业平板界面 QT作为一种垮平台的开发语言工具,可以在众多嵌入式平台开发界面显示.项目和产品开发上,对QT ...

  3. 使用Go语言交叉编译开发嵌入式Linux应用程序

    文章目录 目的 基础说明 编译生成嵌入式Linux应用程序 二进制文件瘦身 与C语言混合进行开发 总结 目的 Go语言非常适合用来开发存储空间不紧张的嵌入式Linux设备应用程序,可以在性能需求和开发 ...

  4. 使用VisualStudio2017开发嵌入式Linux应用程序

    曾几何时,在开发嵌入式Linux时,先在PC上安装一个Ubuntu虚拟机,然后桥接网络,安装Vmwaretools,设置共享文件夹或者配置ftp服务器来实现PC和Ubuntu的文件交换-,改代码在Wi ...

  5. linux端口带卡,基于嵌入式Linux的接口转换卡设计

    接口总线为一群互相连接的设备提供一种有效的通信方式,它是自动测试系统发展的标志,可以说接口总线技术发展的历史就是自动测试系统发展史,接口总线技术发展的水平标志着自动测试发展的水平.本文提出的接口转换方 ...

  6. 直播软件源码开发,直播间内消息系统的实现

    在直播软件源码开发过程中,消息系统是非常关键的,无论是直播间内的消息还是平台内的消息,都关系着用户的使用体验,所以今天我们先用一个简单的"拉"模型搭建一个简单的直播间消息系统. 基 ...

  7. redis,memcached到nginx,底层网络io中剥离精髓丨C/C++Linux丨C++后端开发丨Linux服务器开发丨底层原理

    redis,memcached到nginx,底层网络io中剥离精髓 1. redis单线程网络的优缺点 2. memcached多线程网络的并发优势 3. nginx多进程网络的优势 视频讲解如下,点 ...

  8. 尚观linux视频配套教程,尚观最新嵌入式Linux基础视频教程 98集嵌入式Linux巨制视频教程 新手必备...

    尚观最新嵌入式Linux基础视频教程 98集嵌入式Linux巨制视频教程 新手必备 5.jpg (67.09 KB, 下载次数: 0) 2018-4-16 09:34 上传 1.jpg (44.17 ...

  9. 我的智能充电桩开发笔记(二):系统硬件电路设计概述

    2.我的智能充电桩开发笔记(二):系统硬件电路设计概述 2 系统硬件电路设计 ​ ∗ ∗ ∗ ∗ 开 放 全 部 硬 件 , 软 件 设 计 资 料 , 如 硬 件 原 理 图 ,

  10. 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...

    本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...

最新文章

  1. 关于自注意力机制的思考
  2. MPB:亚热带生态所谭支良、焦金真等-​反刍动物瘤胃样品采集与保存
  3. TensorRT是NVIDIA开发的深度学习推理工具,只支持推理,不支持训练 引
  4. 使用golang的for打印三角形
  5. 越努力越幸运--动态数组vector
  6. 21.IO-multiplexing方式实现Netcat
  7. 非极大值抑制(Non-Maximum Suppression,NMS)(转)
  8. 创建一个war类型的maven项目
  9. java 导出word简历_java导出生成word(类似简历导出)
  10. 记一次Maven发布Jar包中文乱码解决方法
  11. 西安python程序员薪资_最新程序员薪资统计来了!Java均薪16K,Python22k!你拖后腿了吗?...
  12. 什么是量子安全?量子计算时代下的基本安全技术
  13. java导出excel文件(标题为中文乱码)
  14. 知乎上超多赞同的自学网站,每天学习15分钟,受益终身!
  15. rn+android+sdk,RN与Android原生交互
  16. javax.servlet.ServletException: java.lang.NoSuchMethodException
  17. Form表单及模板引擎
  18. 模电——电源与地之间并联电容的作用
  19. 淘宝网页显示不正常,其它网站正常显示---解决办法
  20. java 30分钟_java 实现当前时间加减30分钟的时间代码

热门文章

  1. linux AWK中正则表达式
  2. 命令行配置Windows SNMP服务
  3. 如何删除DNN网站中管理菜单中的一些项
  4. 62. WWW 服务器
  5. 1.PHP数据库陷阱
  6. mysql 批量更新_MySQL批量更新
  7. MySQL服务端恶意读取客户端文件漏洞 (DDCTF2019和国赛均涉及到这个漏洞)
  8. VS2017 无法使用XXX附加到应用程序
  9. spring mybatis mysql 事务不起作用
  10. 消息队列 (1) mac安装RabbitMQ