JZ2440开发板之GPIO实验,遇到的链接语句的问题

自己写的 crt0.s , led.c , Makefile 文件,下到开发板上后始终无法运行,但是将led.c文件拷贝到光盘提供的对应程序中编译,结果可以运行。推测是 crt0.s 或者 Makefile的问题。

通过比对crt0.s发现没有问题。应该是Makefile的问题。

发现自己写的Makefile中的链接语句是:

1 arm-linux-ld -Ttext 0x00000000 -g led.o crt0.o -o led_elf

光盘中对应的语句是:

1 arm-linux-ld -Ttext 0x00000000 -g crt0.o led.o -o led_elf

修改成光盘中的语句,再编译,发现可疑运行了。

原来是链接语句中的 .o 文件的顺序问题,应该是启动程序在前。

时间: 2024-10-24 04:40:09

JZ2440开发板之GPIO实验,遇到的链接语句的问题的相关文章

JZ2440开发板之GPIO实验

(1)Makefile 文件 命令中有一个参数是: Text 00000000      .引申出了2440的两种启动方式:NAND启动和NOR启动 NOR Flash属于内存类期间,它可以像内存一样读,但是不能像内存一样写,要写的话必须经过复杂的步骤 NAND Flash不属于内存类设备,没有地址线. NOR启动时,0地址在NOR上 NAND启动时,0地址在片内SRAM上,

基于JZ2440开发板编写bootloader总结(一)

凡走过必留下痕迹,学点什么都会有用的. 本系列博文总结了自己在学习嵌入式Linux编程过程中的收获,若有错误,恳请指正,谢谢! --参考教材韦东山系列教材 bootloader 是一个用于启动linux内核的C程序,为了达到最终启动内核的目的需要完成以下几个步骤: step1:硬件相关初始化,为启动内核准备硬件平台: step2:将内核从NAND FLASH读取到SDRAM: step3:设置需要传递给内核的启动参数: step4:跳转到SDRAM,运行内核: 下面将详细讲述各个步骤细节: 第一

Linux学习 :移植U-boot_2016.09到JZ2440开发板

一.下载源码:ftp://ftp.denx.de/pub/u-boot/ 二.初始化编译: ①make smdk2410_defconfig #首先使用默认配置,减少后续的配置工作 ②make menuconfig      #根据自身需求进一步配置 ③修改Makefile ,开头只能架构和编译器: ARCH=arm CROSS_COMPILE=arm-linux-      ④修改uboot代码:    1. 设置PLL的时钟的函数在_main中的board_init_f中初始化函数列表中的 

JZ2440开发板

2014年12月14日 刚拿到JZ2440开发板,视频第0课第一节: (1) 要给开发板烧系统,就要用到JTAG,(JTAG一般是与电脑的并口相连的),但是现在电脑都没有并口,所以出现了:OpenJTAG和J-Link.我用的是J-Link. 视频上讲的 offlash 程序,用于烧写系统,但是它只适用于 并口的JTAG 和 OpenJTAG ,不可以用于J-Link. 如果是 J-Link ,则只能使用J-Link烧写 Nor Flash .可以向Nor Flash中烧写 u-boot.bin

JZ2440开发板Uboot烧写

最近买了一块韦东山的JZ2440开发板,在学习的过程中,发现根据书上提供的Jflash烧写Uboot总是失败,最后定位问题原因: 1.文件路径名称含有中文字符 2.在Options->Program Settings->flash中选择正确的flash芯片 两项选择都正确后,即可正确烧写Uboot.

Jz2440开发板熟悉

title: Jz2440开发板熟悉 tags: ARM date: 2018-10-14 15:05:56 --- 概述 外部晶振为12M Nand Flash 256M,Nor Flash 2M,SDRAM 32*2=64M 分区 内容 Nand flash地址分配 bootloader分区 Uboot分区 0---256k 环境变量分区 环境变量(参数) 256k---256k+128k kernel 分区 Linux内核 256k+128k-256k+128k+2M Rootfs分区 根

移植u-boot-2015.10到JZ2440开发板(五)——设置nand分区,环境变量保存地址和其它默认参数

在下载内核或文件系统时,我们可以直接在命令中写明烧到nandflash的具体地址,但较麻烦,我们可以给nandflash分区,这样就可直接写烧到那个分区就行了,较为方便.如何设置呢?首先我们在uboot中输入mtdparts命令,看看默认的分区,结果提示mtdids not defined, no default present.搜索"mtdids not defined",定位到common/cmd_mtdparts.c的mtdparts_init函数中,分析发现是mtdids_de

学习嵌入式-迅为4412开发板的GPIO是怎么操作的?

Exynos4412所有的GPIO都有固定的地址,为了方便操作这些GPIO,Linux内核在gpio-exynos4.h里面定义了一些GPIO的宏 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com 例如: #define EXYNOS4_GPA0(_nr) (EXYNOS4_GPIO_A0_START + (_nr)) #define EXYNOS4_GPA1(_nr) (EXYNOS4_GPIO_A1_START + (

iTOP-4412 开发板的 GPIO 是怎么操作的?

Exynos4412 所有的 GPIO 都有固定的地址,为了方便操作这些 GPIO,Linux 内核 在 gpio-exynos4.h 里面定义了一些 GPIO 的宏,例如: #define EXYNOS4_GPA0(_nr)  (EXYNOS4_GPIO_A0_START + (_nr)) #define EXYNOS4_GPA1(_nr)  (EXYNOS4_GPIO_A1_START + (_nr)) #define EXYNOS4_GPB(_nr)  (EXYNOS4_GPIO_B_ST