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库到根文件系统。

Vue3项目实战:用vue-print-nb搞定多页表格打印(附样式不丢失解决方案)

本文详细介绍了在Vue3项目中,如何利用vue-print-nb插件解决Element Plus多页表格打印的样式丢失与分页错乱等核心难题。通过分离打印视图、编写专用CSS控制分页行为、以及深入理解浏览器打印原理,提供了一套从基础配置到高级技巧的完整企业级打印解决方案,确保打印输出专业可靠。

linux的博客 1233

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

Android13 CarPowerManagementService启动流程分析

在CarPowerManagementService中init调用PowerHalService的setListener设置事件侦听器以接收车辆的电源事件。

liuning1985622的博客 957

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

【读书笔记】Verilog的亚稳态现象和跨时钟域处理方法

文章目录 一、亚稳态 (1)跨时钟域的亚稳态现象 (2)亚稳态的多径传输 二、跨时钟域处理 2.1 单bit信号跨时钟域处理 (1)单径两级触发器同步器 (2)相位控制 (3)多径与多级寄存器同步链 (4)组合逻辑信号的同步化 (5)快时钟域信号的同步化 2.2 多bit信号的跨时钟域处理 (1)异步FIFO (2)双口RAM.........

毕淑敏曾说过:“我不相信命运,我只相信自己的手;我不相信手掌上的纹路,但我相信手指加上手掌的力量”。在这个快节奏的社会,只有自己能力不足才会被卷,踏踏实实沉下心来学一些技术,及时记录,方便以后复盘。 2万+

量子化学仿真软件:VASP_(7).表面与界面性质模拟

在量子化学仿真软件领域,表面与界面性质的模拟是研究多相催化、表面反应、材料科学等领域的关键工具。VASP(Vienna Ab Initio Simulation Package)作为一种广泛使用的密度泛函理论(DFT)计算软件,提供了强大的功能来模拟表面与界面的性质。本节将详细介绍如何使用VASP进行表面与界面性质的模拟,包括模型构建、输入文件准备、计算设置、结果分析等步骤。

kkchenjj的博客 951

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

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

multimicro的博客 1023

扣子Coze智能体万字教程:从入门到精通,一文掌握AI工作流搭建

智能体 = 角色设定 + 提示词 + 变量输入一个好提示词的核心是结构、风格和复用性创建后可以一键发布成网页应用、对话助手整个过程0代码,只靠配置,人人可学,人人可用四、进阶一:理解「工作流」的威力如果你已经用扣子创建了几个简单的智能体,比如写个爆款小红书文案、生成一段短视频脚本,那恭喜你已经入门。但如果你还停留在“一个智能体 = 一段提示词”的层级,你离真正的智能体生产力革命,还差一步:学会搭建“工作流”——让多个大模型自动协同完成任务。

互联网架构师笔记 3508

S3C2240学习资料--自看

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

u010743406的博客 604

这才是 Python 的正确玩法!用强化学习 (RL) 训练 AI 玩《王者荣耀》,胜率 90%!

大家打排位时,一定遇到过那种“意识神级、操作零失误”的对手,或者“走位呆滞、送人头”的队友。以前的“人机”是程序员写死的脚本(If 血量<20% Then 回城)。而现在的顶级 AI(如腾讯绝悟、OpenAI Five),是靠强化学习 (Reinforcement Learning)自己“左右互搏”练出来的。今天,我们不谈枯燥的数学公式,我将手把手教你用,搭建一个能玩 MOBA 游戏的 AI Agent。即使不能去 KPL 打职业,虐一下钻石局还是绰绰有余的!

BUG猿的博客 1182

166、Sim2Real中的强化学习:域随机化与鲁棒策略

第二,训练时监控每个随机化维度对策略梯度的贡献,如果某个维度对loss的方差贡献极小,说明策略已经忽略它了,要么加大范围,要么删掉。第四,如果条件允许,用真实数据来校准随机化分布——采集真机上的传感器数据,拟合出参数分布,再把这个分布作为随机化的采样依据,这比拍脑袋定范围靠谱得多。动态随机化是很多人忽略的维度。域随机化的核心思想说白了就一句话:别去精确建模现实,而是把仿真环境本身变成一个随机分布的集合,让策略在“各种乱七八糟的物理参数”里都见过世面,这样到了真机上,不管现实落在哪个参数区间,策略都能兜住。

sundong_81的博客 27

mini2440上测试rockbox——【后续】

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

民工yofa2008 622

6、云计算中的多核技术:架构、并行性与局限性

本博文深入探讨了云计算中多核技术的架构、并行性及其局限性。文章详细介绍了多核处理器的基础概念、并行硬件和软件的设计原理,并对硬件和软件并行性进行了分类和分析。同时,文章讨论了多核架构在实际应用中面临的挑战,如功率墙、内存墙和ILP墙等问题,并提出了应对策略。此外,还总结了多核技术在高性能计算、实时处理和云计算等领域的应用机遇。文章旨在帮助读者更好地理解多核技术的关键问题,并为未来的技术探索提供方向。

java5的博客 122

【实战】移植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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

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

weixin_33778544的博客 418

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 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、付费专栏及课程。

余额充值