NAND FLASH版本和eMMC版本核心板使用方法基本一致。本文主要描述U-Boot编译、基础设备树文件编译、固化Linux系统NAND FLASH分区说明和NAND FLASH启动系统、固化Linux系统、AND FLASH读写测试等,NAND FLASH版本与eMMC版本核心板在使用方面的不同之处,相同之处将不重复描述。
希望这些能对想要学习嵌入式、进入嵌入式行业和那些刚学习嵌入式不久的朋友有所帮助。 如果你是在嵌入式开发阶段或者正在选型阶段,遇到了什么需求、问题以及经验感想,欢迎在评论区和大家分享!本文测试内容包含系统启动测试、文件传送测试、LED测试、按键测试、按键测试、时钟设置测试、DDR读写测试等。
移植内核:2.6.30.4 内核根目录下的.config为当前配置内核的且已经配置好的内核配置。make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/s3c2410_defconfig /linux-2.6.30.4(作为配置参考,考到根目录下) mv s3c2410_defconfig .config(改名为.config) make menuconfig ARCH=arm(ARCH=arm不能少) 配置过程 退出时记得选yes保存为.config(确保该配置是你已经配置且保存的配置,就算不改动也要保存。否则不能生成.config) make zImage ARCH=arm CROSS_COMPILE=arm-linux-(ARCH=arm不可少) 或者 Makefile中定于ARCH=arm CROSS_COMPILE=arm-linux- 1,make s3c2410_defconfig(生成.config) 2,make zImage 即可生成压缩内核印象 uboot引导内核,入口点必须为0x30008000 zImage:go 0x30008000 uImage:bootm 0x30008000 busybox下载地址: http://busybox.net/ linux快速修改文件夹及文件下所有文件与文件夹权限 chmod 777 * -R uboot的tftp下载出现如下错误: TFTP error: 'Permission denied' (0) 改正方法就是给待下载的文件加上可执行(chmod 777 文件)权限 uboot的使用:tftp下载内核,直接用交叉网线连接PC(实际上为虚拟机)和开发板即可 uboot启动之后,输入:printenv 查看 serverip是不是你的虚拟机的ip(终端ifconfig即可查看) ipaddr要和serverip在同一个网段,即ip的前三段必须相同 ethaddr:开发板dm9000的MAC物理地址 netmast:子网掩码:255.255.255.0 serverip,ipaddr,ethaddr,netmast不符合要求的话,可以使用命令设置:(示例) setenv serverip 169.254.209.223 setenv ipaddr 169.254.209.113 setenv netmast 255.255.255.0 setenv ethaddr 00:01:02:03:04:05 saveenv //设置完毕记得保存环境变量 uboot启动内核:uboot版本(2009.08) 条件:uboot的机器码和内核的机器码要一样 uboot部分修改: 机器码: #gedit board/samsung/my2440/my2440.c gd->bd->bi_arch_number = MACH_TYPE_SMDK2440 内核部分:内核版本(2.6.30.4) #gedit arch/arm/mach-s3c2440/mach-smdk2440.c MACHINE_START(SMDK2440, "SMDK2440") #gedit arch/arm/kernel/head.S //在ENTRY(stext)下添加如下代码 ENTRY(stext) mov r0, #0 mov r1, #0x3f0 //上面的MACH_TYPE值1008换成十六进制就是0x3f0 ldr r2, =0x30008000 内核中的nand分区一定要和bootloader中的一致: #gedit arch/arm/plat-s3c24xx/common-smdk.c offsize size uboot : 0x00000000 0x00030000 //192kb param : 0x00030000 0x00040000 //这个环境变量的地址范围配置的CONFIG_ENV_OFFSET一致 kernel: 0x00080000 0x00500000 //5mb root : 0x00580000 0x0c800000 //200mb #gedit uboot/include/cofings/mini2440.h 查看:MTDPART_DEFAULT = " " //默认分区 编译得到内核zImage uImage的制作: 先将u-boot下的tools中的mkimage复制到主机的/usr/local/bin目录下,执行以下命令: mkimage -n 'linux-2.
1.本节使用的nand flash型号为K9F2G08U0M,它的命令如下: 1.1我们以上图的read id(读ID)为例,它的时序图如下: 首先需要使能CE片选 1)使能CLE 2)发送0X90命
基于测试板卡:创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
本文最始出自http://www.360doc.com/content/12/0318/16/532901_195392228.shtml
介绍 U-Boot 的编译打包、基本配置、常用命令的使用、基本调试方法等, 为 U-BOOT 的移植及应用开发提供了基础。
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构; 即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区
Windows开发环境:Windows 7 64bit、Windows 10 64bit
在si里搜索上图出现的”S3C2410 flash partition”字段,找到位于common-smdk.c中,里面有个数组smdk_default_nand_part[],内容如下所示:
op或者eop支持将代码烧写到Nor flash或nand flash,而市面上的jlink只能将代码烧写到nor flash中。
我属于提前批拿到哪吒开发板的,兴奋之余开始研究如何去运行自己的裸机程序,美其名曰:操作系统.
ROM Code是固件在STM32MP157内部的一段程序,是在复位后执行的第一段程序,复位后STM32MP157内部的两个A核执行相同的程序,由于ROM Code中进行了判断,所以ROM Code只在Core0上运行。
以JZ2440开发板为例,烧录程序到S3C2440。可以使用dnw软件进行烧录。在windows下,一般dnw的驱动都装不好,一般需要禁止数字签名才能装好。所以我们可以把dnw装到linux下,在linux下烧录程序。
更新包含了开发环境搭建、系统编译与烧写和pmon基础知识、启动流程分析、网络加载系统、烧写系统到nand以及新增pmon 移植教程、新增pmon下操作GPIO章节和pmon下Ejtag使用章节等。
该文章介绍了Nor Flash的基本原理、基本操作以及驱动程序的基本使用。它还提供了在用户空间中驱动Nor Flash设备的示例代码。文章还讨论了如何使用MTD设备来模拟Nor Flash,并展示了如何编写简单的用户空间应用程序来与Nor Flash进行通信。
NAND FLASH 原理以及操作详见:https://blog.csdn.net/qq_16933601/article/details/100001443
类似于Windows下的C、D、E等各个盘,Linux系统也可以将磁盘、Flash等存储设备划分为若干个分区,在不同分区存放不同类别的文件。与Windows的C盘类似,Linux一样要在一个分区上存放系统启动所必需的文件,比如内核映象文件(在嵌入式系统中,内核一般单独存放在一个分区中)、内核启动后运行的第一个程序(init)、给用户提供操作界面的shell程序、应用程序所依赖的库等。这些必需的、基本的文件,合称为根文件系统,它们存放在一个分区中。Linux系统启动后首先挂接这个分区──称为挂接(mount)根文件系统。其他分区上所有目录、文件的集合,也称为文件系统,比如我们常说:“挂接硬盘第二个分区”、“挂接硬盘第二个分区上的文件系统”。
介绍TinaLinux Flash,分区,文件系统等存储相关信息,指导方案的开发定制。
项目过程中使用的是Amlogic A113x芯片, 配置emmc dts 时候,有些参数解释比较模糊,这里着重解释下
进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令,如下图所示:
该文章介绍了如何通过U-Boot在ARM平台上进行Linux内核的编译、烧写和启动。首先介绍了U-Boot的编译过程,然后说明了如何将编译好的U-Boot刷入NAND Flash并启动内核。文章还介绍了如何使用U-Boot的串口终端进行命令行交互,并总结了如何在U-Boot中编译Linux内核的步骤和注意事项。
系统没有swap分区的时候,依旧会进行swap操作,swap操作不一定会操作到swap分区。
首先要明确:uboot目标是从flash读出内核(nand read.jffs2 0x30007FC0 kernel;),启动它(bootm 0x30007FC0)。
Uboot 1.16/lib_arm/board.c中start_armboot()函数调用/common/main.c中main_loop()函数,在main_loop()中有uboot启动内核的代码:
4. 打开SecureCRT(在资料光盘->windows工具目录),如下设置连接串口
在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤。移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序。移植的步骤如下:
Linux支持多种文件系统类型,包括ext2、ext3、vfat、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的应用编程接口。
龙芯的系统可以存放在 Nand Flash,SD 卡,U 盘,固态或者是网络加载,迅为的龙芯开发板核心板默认没有焊接 Nand Flash,是将文件系统存储在底板的固态硬盘上,这一章节我们将系统烧写到 U 盘,也可以称之为 U 盘启动。
固件打包是指将我们编译出来的bootloader、内核和根文件系统一起写到一个镜像文件中,这个镜像文件也叫固件。然后可以将这个镜像写到nand、nor flash 或是sd 卡上,从而启动系统。打包成固件时需要使用到一些打包工具,打包脚本以及打包配置文件。本文主要就是介绍打包时需要哪些工具,需要哪些配置文件,以及固件的生成流程。
NXP i.MX8M Mini烧录固件的方式主要通过uuu工具进行烧录, 这个工具本身开源,但是提供给开发者烧录的方式及其不友好, 不得不吐槽。
该文介绍了如何通过NAND Flash存储器来启动Linux内核。首先介绍了NAND Flash存储器的硬件特性,然后说明了如何利用JFFS2文件系统来存储Linux内核的启动信息。接着,介绍了如何从NAND Flash存储器启动Linux内核,并进行了相关测试。最后,总结了全文的主要内容和结论。
title: uboot处理dtb date: 2019/4/28 17:18:19 toc: true —
在上一章使uboot支持网卡传输文件后,但是每次启机时,环境变量都要变为默认值,需要重新设置ip,MAC地址才行,由于没有配置mtdparts命令,启动内核也不成功
首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量,无效则用默认的环境变量. 而我们移植的uboot,由于一直没有使用save,所以没有读不出CRC校验,使用的默认环境变量,如下图所示:
NanoPi-NEO(http://www.friendlyelec.com.cn/nanopi-neo.asp)是一款基于全志H3的小体积核心板,我手里使用的是v1.4版本,如下。
转载:http://blog.csdn.net/olei_oleitao/article/details/7919307
我们买开发板的目的就是把电脑上编写编译好的程序烧写到板子上验证学习。因此开发板上一定有个烧写口,例如JTAG烧写口。但电脑上是不会有这个JTAG口的,因此需要一个USB烧写器将两者连接,例如Jlink、OP/EOP。Jlink本来用的人很多,但随着版权意识的提高以及Jlink公司对盗版的打击,Jlink现在用得越来越少了。EesyOpenJtag是OpenJtag的便宜版本,他和我们的开发板是绝配,他可以直接烧写Nand Flash和Nor Flash,操作简单,价格便宜。
今天给大侠带来FPGA Xilinx Zynq 系列第三十七篇,开启第二十四章,带来Linux 启动相关内容,本篇为本系列最后一篇,本篇内容目录简介如下:
SDK切换存储介质需要修改board.dts、sys_config.fex、内核配置、TINA系统配置。另外,在spinor 存储介质下,通过 u-boot-sun8iw21p1.bin 进行烧录,u-boot-spinor-sun8iw21p1.bin 启动,使用sys_partition_nor.fex作为分区表。在非spinor介质(spinand、emmc、sdnand),通过u-boot-sun8iw21p1.bin进行烧录和启动,使用sys_partition.fex作为分区表。下文将介绍spinor切换spinand、spinand切换spinor、spinor切换emmc、spinor切换sdnand四种切换方式。
答:Length of file is too big : 88564608 > 66183036
不论是在工业控制中,还是在商业领域里,机器人技术都得到了广泛的应用。从用于生产加工的传统工业机器人到丰富大众生活的现代娱乐机器人,都与嵌入式系统密不可分。现有的大多数机器人,都采用单片机作为控制单元,以8位和16位最为常见,其处理速度较低,没有操作系统,无法实现丰富的多任务功能,系统的潜力没有得到充分的发掘和应用。 基于ARM9的机器人视觉系统的目标是在选定好的S3C2410平台上移植并配置Linux操作系统,针对平台和应用的特点,制作合适的文件系统,为机器人视觉系统构建稳定的软硬件开发环境。其次编写应用程
sys_partition.fex 文件中的各个分区大小会按照LEB 大小对齐,sunxi_mbr 分区概念与UBI卷(volume)概念相同 需要修改原镜像文件:物理区TOC0 合逻辑区sunxi_mbr.fex 需要动态生成文件:逻辑区ubi layout volume 注意:
通过wind把SD卡格式化为FAT32模式 sudo fdisk -l //查看分区信息
本节来学习裸机下的Nand Flash驱动,本节学完后,再来学习Linux下如何使用Nand Flash驱动
廖威雄,就职于珠海全志科技股份有限公司,负责Linux IO全栈研发、性能优化、开源社区开发交流、Linux 内核开源社区pstore/blk,mtdpstore模块的作者、大客户存储技术支持、全志首个UBI存储方案主导人、全志首个RTOS NFTL主导人
/*Nand Flash驱动分析*/ /*首先: 市面上的开发板很多,Nand Flash差不多都一样。先说说Nand Flash的特性*/ /* 上图是OK6410开发板的Nand Flash原理图,从上图可知: 1. 数据线和地址线明显是公用的。因为只看见了DATA0-DATA7没看见地址线。作为一个存储芯片当然要写数据,读数据。当然需要地址线。 2. DATA0-DATA7在好多地址被使用了,那怎么区分当前是那个芯片。那当然要CSN2和CSN3来控制当前选中那个芯片,也就是让那个芯片工作。 3.
转载请注明文章地址 http://wiki.100ask.org/Linux_devicetree
SVN英文全称software version number,直译软件版本号,通常为两位数字,取值也必须是0~9的数字,而且99这个值是被保留的。高通平台的SVN号通常存储在Modem镜像中,X12项目也不例外,一般是modem在初始化时读取预编译就已经定义好的SVN号,并且同时从nv中读取到svn号,进行对比,若不一致,则将新svn号写入nv,这样就可以确保svn号能够一直随版本更新,且能够与imei号组成16位的IMEISV,在注网时通过空口上报给网络侧。 通常各通信模组厂商有一套自己定义的规则,用于定义软件版本号和SVN之间的对应关系,如取软件全版本号末两位作为SVN号,后续将以此为例;但通信模组通常会被用于MIFI、CPE、工业网关、工业路由器等场景,由于通信模组本身就是多核,CPU处理性能较强,尤其是高速通信模组,如高通SDX12、SDX55、SDX62、SDX65等平台,其处理能力优越,完全可以作为独立的处理器使用,无需再借助于host设备,这就催生了OpenCPU的方案,很多MIFI、CPE等厂商会直接基于上述平台进行二次开发,并且重新制定自己的版本号、SVN号规则。 但通常SDK仅会给第三方厂商开放boot、system、user等分区,boot分区存储kernel镜像,客户可以集成外设驱动和应用,如wifi、phy等;system是文件系统,客户可以增加自己的应用,删除一些不必要的应用,如网络管理相关、webui、网关配置等;user是客户存储客制化数据的分区,如客户的wifi配置、lan侧管理参数、客制化信息等。客户可以对这三个镜像或分区进行二次开发。
领取专属 10元无门槛券
手把手带您无忧上云