我们之前讲过CPU,也说了CPU和内存的那点事儿,今天咱就再来说说有关内存,作为一个程序员,你必须要懂的哪那些硬核知识!大白话聊一聊,很重要!先来大白话的跟大家聊一聊,我们这里说的内存啊,其实就是说
2021-07-27 08:02
编程中的命名设计那点事
2012-08-17 09:32
FPGA那些事儿-驱动篇I
2017-09-28 13:58
FPGA那些事儿--Modelsim仿真技巧REV6.0。点击下载
2019-04-23 07:19
在PCB设计中遇到多路一样的电路,怎么做最方便,一个一个摆多费事。分享一个多通道设计。
2015-07-07 09:56
从今天开始,我们将连载《FPGA那些事儿-驱动篇I》,每周更新一次。 这篇连载文档,我们已经发布了三篇 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块【黑金原创教程】【FPGA
2014-06-09 13:58
题西林壁朝代:宋代作者:苏轼横看成岭侧成峰远近高低各不同不识庐山真面目只缘身在此山中回头看看,和280相处的日子已经不短了,1个月的时间,一年才有12个,和280玩耍的日子里,每天都有一位雷锋式的好人默默地陪伴我们,他就是----------------uboot。是什么原因,让一坨冷冰冰的金属和半导体热舞起来,有童鞋说是通了电,当然需要电,然而电只能让这些东西群魔乱舞,乱舞对我们毫无意义,我们需要的是有节奏有步骤有计划有激情地热舞,做这个事的就是uboot. 说起uboot,不得不从bootloader开始,在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。负责初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。童鞋们都装过机,知道BIOS,在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。 可见,BootLoader是一个小程序,在我们尽情玩耍之前,默默地做好了暖场工作,BootLoader家庭里有很多兄弟姐妹: Redboot是Redhat公司随eCos发布的一个BOOT方案,支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一个完善的嵌入式系统Boot Loader。 ARMboot是一个ARM平台的开源固件项目,它特别基于PPCBoot,一个为PowerPC平台上的系统提供类似功能的姊妹项目。鉴于对PPCBoot的严重依赖性,已经与PPCBoot项目合并,新的项目为U-Boot。支持的处理器构架有StrongARM ,ARM720T ,PXA250 等,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的。 U-Boot,也就是我们灰常灰常熟悉的,是由开源项目PPCBoot发展起来的,ARMboot并入了PPCBoot,和其他一些arch的Loader合称U-Boot。2002年12月17日第一个版本U-Boot-0.2.0发布,同时PPCBoot和ARMboot停止维护。U-Boot自发布以后已更新6次,最新版本为U-Boot-1.1.1,U-Boot的支持是持续性的。支持的处理器构架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等, U-Boot(Universal Bootloader)从名字就可以看出,它是在GPL下资源代码最完整的一个通用Boot Loader(注:Universal,普遍的,一般的; 通用的,万能的; 全世界的; 宇宙的),uboot真的很好很强大!其他兄弟还有,Blob,Jan-Derk Bakker and Erik Mouw发布的,这个我真没听说过,Bios-lt,专门支持三星(Samsung)公司ARM构架处理器S3C4510B的Loader,Bootldr,是康柏(Compaq)公司发布的, 支持SA1100芯片。支持串口Y-modem协议以及jffs文件系统。vivi是大---韩民国mizi 公司开发的bootloader, 适用于ARM9处理器,还有DSP的bootloader......向这些不可或缺、默默工作的bootloader们致敬!U-Boot是怎么工作的呢?启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能硬件设备初始化加载U-Boot第二阶段代码到RAM空间设置好栈跳转到第二阶段代码入口(2)第二阶段的功能初始化本阶段使用的硬件设备检测系统内存映射将内核从Flash读取到RAM中为内核设置启动参数调用内核 用图来说事,第一阶段:uboot内存使用:第二阶段: uboot做的事其实还是蛮多蛮复杂的嘛,至于uboot烧写,前边已经用u***烧过了,i.mx28和别的系列产品相比比较特殊,i.mx28的Nand flash 模式它有自己的bootloader为bootlet,并且它是将u-boot和uImage集成在linux.***文件中,所以你在烧写到Nand flash时候不需要烧写u-boot,只要烧写linux.***和文件系统就好。于是Uimage出场了,说下uimage,先说俩不得不说的东,vmlinuz和initrd-x.x.x.img一、vmlinuzvmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage/boot/vmlinuz”产生。zImage适用于小内核的情况,它的存在是为了向后的兼容性。 二是内核编译时通过命令make bzImage创建,然后通过:“cp/usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz”产生。bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。 zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有 gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解包vmlinuz。 二、initrd-x.x.x.img initrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。initrd映象文件是使用mkinitrd创建的。mkinitrd实用程序能够创建initrd映象文件。这个命令是RedHat专有的。其它Linux发行版或许有相应的命令。这是个很方便的实用程序。具体情况请看帮助:man mkinitrd下面的命令创建initrd映象文件。有问题找男人,多man下有好处,不过我喜欢度娘。 对于Linux内核,编译可以生成不同格式的映像文件,例如:# make zImage# make uImage zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。vmlinux编译出来的最原始的内核文件,未压缩。zImage是vmlinux经过gzip压缩后的文件。bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。uImageU-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的tag。vmlinuz是bzImage/zImage文件的拷贝或指向bzImage/zImage的链接。initrd是“initial ramdisk”的简写。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。vmlinux是内核文件,zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到,只能从0X0地址运行。bzImage在uClinux中很少见到。 uImage是u-boot使用bootm命令引导的Linux压缩内核映像文件格式,使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得。可以由bootm命令从任意地址解压启动内核。 由于bootloader一般要占用0X0地址,所以,uImage相比zImage的好处就是可以和bootloader共存。 所有资料总结自网络,说得不对请童鞋们斧正。
2015-11-24 12:05
Verilog HDL那些事儿建模篇:在众多的Verilog HDL 参考书,隐隐约约会会出现这样的一个“建模”。建模在Verilog HDL的世界里是一个重要的基础,很多初学Verilog HDL
2020-04-20 15:45
本demo演示了labview与excel的联合功能,程序由不同模块构成易学易用,欢迎访问。
2014-12-09 20:02
一个好的安全加密芯片不但要有安全可靠,不可被破解的物理硬件,还要有可灵活设计的软件。二者缺一不可,否则再好的硬件,会因为软件设计的限制,被破解。再好的软件设计方案,也会因为,硬件安全程度不够,被侵入者全盘复制。目录一、为什么要用加密芯片2二、加密芯片安全性考虑要素3三、加密芯片的硬件安全性3四、加密芯片的软件安全性51.真值点判断工作模式52.数据加解密工作模式63.功能运算工作模式8五、结束语9
2018-03-01 10:42