ubuntu 16.04 环境下编译S3C2440平台总结 (更新)

使用buildroot制作交叉编译器 虚拟机:VMware Player linux开发环境:centos6.8 开发板:fl2440(s3c2440处理器) 一:了解Buildroot:         buildroot是一组makefile和补丁,可简化并且自动化构建嵌入式系统环境的过程,也就是可以用它来制作交叉编译器、根文件系统,把u-boot、linux kernel集成到buildroot中一起编译。 阅读详情

2440工程代码 https://github.com/tgni/my2440.git,该工程是当初移植飞凌2440开发板所做的工程,移植过程也是简单粗暴,并没有仔细研究细节,有不足之处,请多多包涵。

1. 使用openocd烧写S3C2440的nandflash

    a) 准备工作:sudo apt-get install openocd
    b) openocd 需要配置自己的openocd.cfg,配置文件可以放在当前执行openocd的目录,也可以是用参数-f指定。我目前的openocd.cfg配置如下:
    source [find interface/jlink.cfg]
    source [find board/mini2440.cfg]
    c) openocd的配置脚本目录在/usr/share/openocd/scripts, 其中
    修改了jlink.cfg的配置:adapter_khz 250
    修改了mini2440.cfg的配置:
        #nand device s3c2440 0
        set _NANDNAME $_CHIPNAME.nand
        nand device $_NANDNAME s3c2440 $_TARGETNAME
    以便能够烧写nandflash.
    d) 烧写步骤:
        1. 打开终端 openocd -f /YOUR_PATH/openocd.cfg, 提示能够正确识别s3c2440
        2. 打开另一终端: telnet localhost 4444

        出现如下信息:
        tgni@B460:~$ telnet localhost 4444
        Trying 127.0.0.1...
        Connected to localhost.
        Escape character is '^]'.
        Open On-Chip Debugger
        >
        执行 halt

        > halt
        target state: halted
        target halted in ARM state due to debug-request, current mode: Supervisor
        cpsr: 0x20000093 pc: 0xc0731dec
        MMU: enabled, D-Cache: enabled, I-Cache: enabled
        >

        nand probe 0
        nand erase 0 0 0x60000 #大小必须是0x20000(blocksize)的整数倍
        nand write 0 u-boot.bin 0
 

2. 利用buildroot制作交叉编译工具链。

    a) 使用版本buildroot-2014.02
    b) buildroot的编译
        make mini2440_defconfig
        make menuconfig
        make
    生成的toolchain在output/host目录,值得一提的是,buildroot可以编译整个mini2440的uboot,kernel和fs。这里我们不去尝试了。因为默认编译的uboot网络有bug,一直checksum bad...
    我生成的toolchain版本是arm-linu-gcc v4.7.3.
    buildroot编译过程中遇到的错误都是简单的问题,大部分是因为系统太新,头文件找不到或者结构定义找不到,修复一下就没问题了。
    生成的toolchain放在/opt/toolchian/目录下,并且export PATH=/opt/toolchain/usr/bin:$PATH
    如果是tcsh则使用set path = ($PATH /opt/toolchain/usr/bin)
 

3. uboot 编译

    已经移植好的uboot-2010.06编译生成uboot.bin
 

4. kernel的编译

    进入kernel目录,
    cp my2440_config .config
    make menuconfig
    注意:我这里选择的是 ramfs, 所以进入
        General setup  --->
             [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
             (/home/tgni/my2440/root-2.6.30.4) Initramfs source file(s)   
    选择正确的rootfs目录,其他默认即可。
    编译过程可能遇到错误,细心排查即可。
    kernel生成zImage没办法使用uboot直接加载,需要通过uboot生成的mkimage工具来制作uImage。
    具体命令如下:
    mkimage -n 'tekkaman' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage zImage.img
    
    mkimage 选项定义:
    参数说明:
        -A 指定CPU的体系结构,可用值有:alpha、arm 、x86、ia64、mips、mips64、ppc 、s390、sh、sparc 、sparc64、m68k等
        -O 指定操作系统类型,可用值有:openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos
        -T 指定映象类型,可用值有:standalone、kernel、ramdisk、multi、firmware、script、filesystem
        -C 指定映象压缩方式,可用值有:
        none 不压缩(一般使用这个,因为zImage是已经被bzip2压缩过的自解压内核)
        gzip 用gzip的压缩方式
        bzip2 用bzip2的压缩方式
        -a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载
        -e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)
        -n 指定映象名
        -d 指定制作映象的源文件
 

5. rootfs的注意点:

    因为rootfs的制作是我之前已经制作好的。根文件系统的制作参考blog

    Tekkaman Ninja
    http://blog.chinaunix.net/uid/20543672.html

    但是一些使用mknod命令制作的文件会失效,小心看tar包的提示。
    tar: Exiting with failure status due to previous errors

    root-2.6.30.4/dev/null
    tar: root-2.6.30.4/dev/null: Cannot mknod: Operation not permitted
    root-2.6.30.4/dev/console
    tar: root-2.6.30.4/dev/console: Cannot mknod: Operation not permitted

    因此:进入 dev目录:
    mknod -m 600 console c 5 1;mknod -m 666 null c 1 3; (need root)
 

6. uboot 烧写总结:

    a) ubuntu tftpd 服务器搭建
        sudo apt-get install tftpd-hpa
        sudo vim /etc/default/tftpd-hpa3
        输入如下:
            # /etc/default/tftpd-hpa
            TFTP_USERNAME="tftp"
            TFTP_DIRECTORY="/home/tgni/tftpboot"
            TFTP_ADDRESS="[::]:69"
            #TFTP_OPTIONS="--secure"
            TFTP_OPTIONS="-l -c -s"
        sudo service tftpd-hpa start
    b) 将u-boot.bin, zImage.img 放入/home/tgni/tftpboot, 这里tftpboot的权限是777
    c) 烧写bootloader
        tftp 0x30008000 u-boot.bin
        nand erase 0 0x60000
        nand write 0x30008000 0 0x60000
        其中前面256K是boot, 128K是bootconfig
    d) 烧写kernel
        tftpboot 0x30008000 zImage.img
        nand erase 0x60000 0x500000
        nand write 0x30008000 0x60000 0x500000
    e) 因为是ramfs,所以不需要额外烧写rootfs分区了。
    f) 设置bootloader自动加载内核
       bootloader环境变量
        u-boot2010.06@Daniel # printenv
        bootdelay=3
        baudrate=115200
        ethaddr=08:00:3e:26:0a:5b
        ethact=dm9000
        filesize=4E6590
        fileaddr=30008000
        netmask=255.255.255.0
        ipaddr=192.168.2.105
        serverip=192.168.2.15
        bootcmd=nand read 0x30008000 0x60000 0x500000;bootm 0x30008000
        stdin=serial
        stdout=serial
        stderr=serial
       命令为:
       setenv bootcmd 'nand read 0x30008000 0x60000 0x500000;bootm 0x30008000'

       saveenv

 

移植最新4.19.8内核至JZ2440——根文件系统制作 一、准备编译环境和工具  系统:ubuntu16.04 源码:https://busybox.net/下载最新busybox-1.29.3.tar.bz2 二、制作根文件系统 1、解压 tar -xjf busybox-1.29.3.tar.bz2 2、make menuconfig, 这里我使用静态库的方式编译 Settings   ===>Build Options ====... 阅读详情

相关推荐

Arm-Linux嵌入式开发环境搭建:交叉编译+Qt+FL2440实战指南

Arm-Linux是嵌入式Linux开发的核心范式,其本质是通过交叉编译工具链在宿主机上生成可在ARM目标板运行的可执行程序。该技术依赖宿主-目标分离架构,关键在于工具链匹配、头文件与库的ABI一致性,以及运行时环境(如Framebuffer、QWS)的正确配置。其技术价值在于可控性强、资源占用低、贴近硬件,广泛应用于工业控制、教学平台和轻量级IoT设备。典型应用场景包括基于S3C2440等经典SoC的Qt嵌入式GUI开发、U-Boot/Linux/BusyBox系统构建及裸机调试闭环。本文以FL2440开

baochuanying9531的博客 458

buildroot编译常见错误

264452对应的16进制为0x40904,对应编译器版本来说就是4.9.4。搜索:libfakeroot.c。搜索c-stack.c。在该文件中增加上述代码。3、make 编译错误。

gz521125的博客 5062

CARLA仿真平台源码构建三重耦合原理与实操避坑指南

CARLA作为工业级自动驾驶仿真平台,其核心是UE4引擎、CARLA项目与Python客户端三层深度耦合的构建体系。理解这种耦合机制,是解决90%安装失败、ImportError和版本不匹配问题的前提——它决定了CARLA不接受‘近似版本’,只认精确commit hash与绝对路径;不信任全局环境,只依赖纯净系统状态。该设计保障了物理仿真精度与跨平台一致性,广泛应用于算法验证、传感器建模及多车协同测试等场景。本文聚焦CARLA 0.9.12+版本的源码构建全流程,深入解析UE4源码编译强制要求、carla模

davy57345的博客 327

淘宝镜像下Electron初始化与打包过程中operation not permitted异常解决方案

目录 前置内容(可跳过) 环境配置 初始化例程 打包成exe文件 operation not permitted解决方案 operation not permitted异常分析 npm install过程中的operation not permitted 打包过程中的operation not permitted分析 前置内容(可跳过) 环境配置 下载Node.JS并安装,查...

刘之帅 3372

Cosmos 3:面向物理AI的全模态世界模型

世界模型是人工智能理解动态环境的核心范式,其本质是从感知数据中构建可推理、可预测、可干预的内部表征。随着Physical AI(物理AI)概念兴起,业界正从纯数据驱动转向融合牛顿力学、能量守恒等第一性原理的建模范式;Omnimodal(全模态)则要求视觉、触觉、力觉、温度等多源信号在统一时空与物理量纲下对齐与因果推演。这类模型的技术价值在于提升外推能力、增强仿真-现实迁移鲁棒性,并支撑机器人控制、工业质检、康复医疗等强物理约束场景。Cosmos 3正是这一演进路径上的代表性突破,它将世界模型从像素预测器升级

weixin_33904756的博客 412

VLA模型落地实战:从RoboMamba到真实机器人部署全链路避坑指南

视觉-语言-动作(VLA)模型是具身智能的核心范式,其本质是通过多模态对齐实现感知、理解与执行的统一。原理上依赖跨模态嵌入空间的一致性建模,结合状态空间模型(如Mamba)提升长序列推理效率;技术价值在于简化传统分层架构,推动端到端机器人决策。然而在工业场景中,传感器噪声、时间异步、标定漂移与物理约束等现实变量,严重削弱VLA的鲁棒性与可执行性。典型问题包括动作抖动、loss发散、光照敏感及CAN总线解码失真——这些并非模型能力不足,而是训练假设与真实系统间的鸿沟。本文聚焦RoboMamba等高效VLA模型

weixin_30333885的博客 503

ubuntu22.04下rv1109 rootfs编译问题处理

出于对Ubuntu新版本系统的体验,将系统更新到了ubuntu22.04了。然后在编译rv1109 sdk时出现了一些异常的错误。但是已经不回去了,只能硬着头皮一路走下去了。并将错误记录以下,以便下次有类似错误,做个参考。buildroot 报错:c-stack.c:55:26:error:missing binary operator before token “(“55在buildroot目录中找到c-stack.c文件,并更改c-stack.c文件中,SIGSTKSZ的宏定义。find -name c

icemou的专栏 5316

工业缺陷检测端到端实战:从标注规范到TensorRT部署

工业缺陷检测是计算机视觉落地的核心场景,其本质是解决小样本、长尾分布、强部署约束下的目标定位与分类问题。原理上需兼顾数据增强的物理合理性、模型结构对边缘设备的适配性,以及后处理与产线节拍的协同性。技术价值在于打通‘标注—训练—推理—报告’全链路可复现性,显著降低mAP瓶颈与线上漏检率。典型应用场景包括金属表面划痕识别、PCB焊点虚焊检测、汽车零部件毛刺定位等。本文聚焦YOLOv8在Jetson Orin上的缺陷检测流水线构建,深入解析标注协议、Anchor重聚类、CLAHE预处理、INT8校准及NMS集成等

张沈鹏,在路上 ... 512

制作s3c2440-buildroot交叉编译器

一、安装crosstool-ng 1、官网下载到自己创建的文件夹中:wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.0.tar.xz 2、解压:tar -vxf crosstool-ng-1.23.0.tar.xz 3、进入解压后的文件夹 4、指明安装路径:./configure --prefix=/home...

静待另一片蓝天 893

基于zynq的buildroot制作根文件系统

本文基于xilinx的zynq 7z045芯片使用buildroot工具制作根文件系统,并添加网络工具:dropbear、vsftpd、tcpdump、iperf3等,移植mkfs.ext4工具,并添加交叉编译器lib库到根文件系统。

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

S3C2440移植uboot之编译烧写uboot

移植环境 主 机:VMWare–ubuntu16.04 开发板:S3C24402440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2 获取uboot 进入https://www.denx.de/wiki/U-Boot下载uboot 一直往下拉选择如下 将下载好的压缩包解压到任意文件夹,并创建source insig...

嵌入式与Linux那些事的博客 6271

终端效率神器:Tmux 安装与使用全指南

终端效率神器:Tmux 安装与使用全指南

身在被窝_心在编程 1360

u-boot 移植(一)编译环境搭建

u-boot 移植(一)编译环境搭建 `soc`:s3c2440 `board`:jz2440 `uboot`:[u-boot-2016.11](http://ftp.denx.de/pub/u-boot/u-boot-2016.11.tar.bz2) `toolchain`:[gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi](https://releases.linaro.org/components/toolchain/binaries/7.4-201

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 5168

银河麒麟V10搭建vsftpd

1、查看是否有安装过2、安装3、服务启动步骤设置开机启动并此次立即启动启动重启停止查看状态4、系统防火墙放行ftp服务如果没有重要的数据在服务器里面,或者在本地虚拟机中外网无法访问的情况下,建议直接关闭防火墙即可省略以上繁琐的步骤。

hhq850741642的博客 6485

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

weixin_42412049的博客 740

JZ2440_V3_内核驱动程序_点亮一个LED灯

为了用内核驱动程序点亮一个LED灯,真是费尽周折,参考了韦东山的《嵌入式linux驱动开发完全手册》(以下简称《完全手册》)和网上很多人的blog,最终在@Carlos·Wei的指引下,终于点亮了LED灯,见下图! 其中的一些弯路主要是没严格按照韦东山的linux版本和其编译器来编译内核和驱动程序,二来是因为韦东山这本书当时写的不是那么详细,在理解上有些许偏差。 本文地址:https://...

multimicro的博客 1023

【Android调试】高通adb识别不到设备的完整排查指南:从驱动到端口一步到位

本文系统梳理高通(Qualcomm)平台Android设备adb无法识别的完整排查流程。从最基础的USB连接检查开始,到Windows设备管理器中驱动状态的判断、高通USB驱动的正确安装与更新方法,再到adb端口被占用、USB调试未开启、驱动签名校验失败等高频场景的解决方案。每一步均配截图和操作命令,文末附常见报错速查表,适合做系统开发、刷机调试或者Android Framework bringup时遇到adb不通的工程师快速定位。

weixin_44081096的博客 284

S3C2240学习资料--自看

自己搭建环境看的,设置为VIP权限。其他人没必要看。。。

u010743406的博客 604

【Halcon-2D测量】set_metrology_object_param 函数功能(用于配置计量对象常规参数)

HALCON算子 set_metrology_object_param 是2D计量模块的核心配置工具,用于动态修改计量对象的测量区域、边缘检测和几何拟合参数。该算子需在检测前调用,支持批量或单独修改对象参数,包含三类关键参数:测量区域(如长度、间距)、边缘检测(如平滑Sigma、阈值)和几何拟合(如RANSAC阈值、最小分数)。使用时需注意参数互斥规则(如measure_distance优先于num_measures)和多线程同步要求。算子无输出参数,仅修改计量模型内部状态,需配合apply_metrolo

weixin_45590420的博客 293

LangGraph实战训练营-从零构建AI驱动的wiki知识库

本文深入解析 LangChain 团队开源的 Deep Agents 框架核心示例——LLM Wiki,一个基于大语言模型自动构建和维护持久化知识库的生产级 AI Agent 系统。文章从项目架构、环境搭建、核心原理到实战操作全面展开:详解 CompositeBackend 组合后端与细粒度权限控制的安全设计、四种工作模式(初始化/摄取/查询/质量检查)的完整流程、LangSmith 远程沙箱的隔离执行机制,以及人机协同审核(HITL)的实践应用。

program哲学 198

mini2440上测试rockbox——【后续】

得到的结论是:分别在执行../tools/rockboxdev.sh后,生成的gcc配置版本是有差别的,早期是4.0.4,最新是4.9.4。而且mini2440的config配置中默认是没有 开启plugins支持的,但是打开后又会增加许多程序的按键未定义之类的错误,受限于mini2440本身的按键数量,这里只能定向到触摸屏上,但仍会造成系统运行崩溃(可能跟SD卡读写有关);但作为技术研究可以尝试移植到新的cortex-m平台,包括目前国内的硬件厂家发力,像瑞芯、全志、炬芯,可以尝试一些移植学习。

民工yofa2008 622

提交 ieee 手稿出现:Do not include the Reviewer PDF with my submission 怎么办

IEEE投稿Reviewer PDF选项说明 投稿时出现的"Do not include the Reviewer PDF with my submission"选项控制是否附带评审专用PDF文件。Reviewer PDF是系统自动生成包含所有投稿材料的完整PDF,用于同行评审。建议保持默认不勾选状态,除非确认编辑部不需要该文件,否则可能影响审稿流程。勾选表示不附带此PDF,不勾选则会正常生成并提交该评审文件。

ZhangJiqun&191cm&85kg 2212

【实战】移植QT5.6.0到嵌入式linuxS3C2440单板

欢迎扫码关注微信公众号:柒零玖嵌入式,更多嵌入式软硬件相关分享!           目前网上关于QT5.6的移植教程还不完善,本博客详细说明QT5.6.0移植到嵌入式linux单板的详细步骤。并将移植好的分享在GitHub上。一、实验环境(1)编译工具链arm-Linux-gcc-4.4.3.tar.gz(2)linux系统linux-3.4.2(3)虚拟机16.04.1-Ubuntu(4)bu...

风雨无阻 7388

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

12GB显存本地部署Qwen3.6 35B大模型:从环境配置到API集成实战

大型语言模型(LLM)通过海量参数模拟人类语言理解与生成,其核心原理基于Transformer架构的注意力机制,实现对上下文信息的深度建模。这一技术为自然语言处理带来了革命性突破,其价值在于能够执行复杂的文本生成、代码编写和逻辑推理任务,极大地提升了自动化内容创作与智能交互的效率。在应用场景上,LLM已广泛渗透到智能客服、代码辅助、文档摘要等实际工程领域。本文聚焦于如何在消费级硬件(如12GB显存显卡)上,通过量化技术和高效推理框架,部署并优化Qwen3.6 35B这类经过后训练增强的模型,实现私有化、低成

weixin_33778544的博客 418

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: Linux内核跟踪之syscall tracer
下一篇: OPENOCD在线调试uboot2010.06, utu2440 (扬创2440v4.5)
Tgni
博客等级 码龄18年 5粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值