首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Uboot学习(三)之Uboot的工作方式

这次是写公众号以来最久一次没有更文了,主要是刚进新公司,要熟悉一下环境,而且由于开发项目催的紧,压力比较大,以至于下班时间比较晚;同时在交流群里面也比较少回答网友的问题,不过如果你私聊我,我还是会抽出时间来给你解答;现在终于适应了开发节奏,不会那么难了;同时在今天这篇文章里面申明一下,下次私聊我问问题的网友,不要称呼我大佬和大神哦(大佬和大神的称呼,自己的能力远远达不到),自己也是从啥都不懂,即使现在找到合理的岗位,每天也在努力学习(这里讲个笑话,这几天办理那个社保号的问题,一开始我不知道社保号就是电脑号,直到昨天问同事才知道。)学习是不会中断的,特别是干我们这一行的,正所谓活到老学到老,而且人一生不是来享受的,而是生来都要吃一点苦的,先苦后甜嘛。

03

Uboot学习(四)之Uboot命令和ping命令实战

周末晚上好,今天继续给大家分享学习Uboot的文章。由于上班时间大部分是在写应用代码:web和c++的代码(web和c++,其实我没学多少,之前我只写几篇C++的文章,工作完全是被逼无奈。),平时只是调试一下硬件,在自己的印象里有好久没有玩开发板了,这不为了过瘾,一边学习的同时,又能够玩开发板,本次学习分享硬件平台是三星的s5pv210,这个开发板去年买来学习的,已经放了好久,在吃灰了,有好多板子都被我放在那里吃灰了,现在可能是由于没有玩了,像一只饥饥饿的材狼一样,好想玩;之前的文章里面也有介绍,自己之前在毕业之前系统学过一段时间的pcb,现在这个技能也好久没用了,手也是非常痒,hh ,那天有时间也来画画板玩。总之,一句话,把板子玩起来,不要吃灰!

03

linux内核移植过程问题总结

移植内核: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.

02

迅为2K1000龙芯开发板pmon BSP移植之配置CAN总线

和 uboot 移植相比,给开发板移植 pmon 难吗?有什么区别呢。我们在移植 uboot 的时候,基本上是不 会在 uboot 的官网去下载纯净的 uboot 镜像的,而是用的半导体厂家提供的 bsp 包里面的 uboot。为什么要 这么做呢?并不是说 uboot 官网里面的 uboot 源码不能用,不能移植,而是 uboot 官网里面的 uboot 对相应的 CPU 的支持不是很好。你想哈,谁对 CPU 最熟悉呢?肯定是半导体厂家是不是,他们对自己的 CPU 肯定 是最熟悉的。所以他们提供的 bsp 里面的 uboot 是对他们的 CPU 支持最好的,驱动最全的。所以我们不会 在 uboot 官网去下载,然后在去移植。而且使用半导体厂家提供的 BSP 还有一个好处,就是移植非常简单。

02

Uboot学习(一)之为啥要有Uboot这玩意

这周又一段时间没怎么写文章了,这周上班接触的东西有点多,每天都在接受挑战。维护公司移动app界面,设计到的技术是css、html、javascript。然后把写好的app程序通过threadx和Linux两个系统的支持(Linux内核版本是在3.10版本的,在安霸和海思平台);第一次搭建编译环境(这里跟平时学的环境有比较大的出路,作者被骂了好几次,终于是成功了,呜呜。。。),然后实时在PC或者手机端采集实时视频监控。后期会不断学习和分享自己在工作当中的一些经验给大家,希望对大家有帮助。今天开始写Uboot的文章和Linux驱动的文章。之前Linux应用的文章全部在公众号后台有。以上学习过程中,作者是学习朱有鹏老师的嵌入式课程。

02

嵌入式Linux系列第3篇:uboot编译下载

本篇介绍如何编译及下载uboot到ARM板子上。对于初学者有这么三个名词,分别是uboot、kernel和rootfs。这三个名词我刚开始接触是非常的困惑,现在随着使用增多稍微有一点点感觉。大家刚开始学不用太纠结这个问题,等实际操作一段时间就会理解了。uboot的主要作用是用来启动linux内核,因为CPU不能直接从块设备(如NAND/EMMC/SD卡)中执行代码,需要把块设备中的程序复制到内存中,而复制之前还需要进行很多初始化工作,如时钟、串口等;要想让CPU启动linux内核,只能通过另外的程序,进行必要的初始化工作,再把linux内核中代码复制到内存中,并执行这块内存中的代码,即可启动linux内核;一般情况下,我们把linux镜像储存在块设备中如SD卡、Nandflash等块设备中,首先执行uboot代码,在uboot中把块设备中的内核代码复制到某内存地址处,然后再执行这个地址,即可启动内核。

06

整合Xilinx PetaLinux工程编译和Open Source U- Boot/Linux编译

PetaLinux是Xilinx基于Yocto推出的Linux开发工具。Yocto是业界主流的Linux发行版的构建工具,它不仅可以从源代码编译Linux 内核,还可以编译Linux发行版必须的数以千计的的应用程序,功能非常强大。Yocto的出现,大幅度降低了构建嵌入式Linux发行版的难度。 万物总有两面性。虽然PetaLinux/Yocto可以一键编译出一个自定义的嵌入式Linux发行版,但是编译整个文件系统很耗费时间。完整的一次PetaLinux/Yocto编译,可能需要从网络下载上GB的文件,可能需要几个小时。即使只更改一行代码,也需要数分钟时间。PetaLinux/Yocto的编译流程,也和很多开发人员原来的基于make的工作方法不一样,它会分析文件系统里所有应用程序的配置文件,执行下载、配置、编译、打包等过程。 如果在调试单板时,仅仅改动一行代码,也需要执行这些操作,显得冗余,也影响开发效率。 为了适应开发人员的工作习惯,也为了提高速度,可以整合PetaLinux工程编译和OpenSource U-Boot/Linux编译。

01
领券