ubuntu: 18.04

busybox: busybox-1.20.2.tar

修改时钟

linux-4.9.84\arch\arm\mach-s3c24xx\mach-smdk2440.c

// s3c2440_init_clocks(16934400);
s3c2440_init_clocks(12000000);

拷贝配置

linux-4.9.84$ cp arch/arm/configs/s3c2410_defconfig ./
linux-4.9.84$ cp s3c2410_defconfig .config

修改机械码

linux-4.9.84\arch\arm\tools\mach-types

smdk2410     ARCH_SMDK2410       SMDK2410        193
smdk2440        ARCH_SMDK2440       SMDK2440        168

设置网卡参数,

linux-4.9.84\arch\arm\mach-s3c24xx\mach-smdk2440.c

#include <linux/dm9000.h>#if 1
// new add
static struct resource s3c_dm9k_resource[] = {[0] = {.start = S3C2410_CS4,.end = S3C2410_CS4 + 3,.flags = IORESOURCE_MEM,},[1] = {.start = S3C2410_CS4 + 4,.end = S3C2410_CS4 + 4 + 3,.flags = IORESOURCE_MEM,},[2] = {.start = IRQ_EINT7,.end = IRQ_EINT7,.flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,}};static struct dm9000_plat_data s3c_dm9k_platdata = {.flags = DM9000_PLATF_16BITONLY,};struct platform_device s3c_device_dm9000 = {.name = "dm9000",.id = 0,.num_resources = ARRAY_SIZE(s3c_dm9k_resource),.resource = s3c_dm9k_resource,.dev = {.platform_data = &s3c_dm9k_platdata,}};
#endifstatic struct platform_device *smdk2440_devices[] __initdata = {&s3c_device_ohci,&s3c_device_lcd,&s3c_device_wdt,&s3c_device_i2c0,&s3c_device_iis,&s3c_device_dm9000,
};

下载 yaffs2

ym@ym:~/work/tq2440/lesson02$ git clone git://www.aleph1.co.uk/yaffs2
ym@ym:~/work/tq2440/lesson02$ cd yaffs2/
ym@ym:~/work/tq2440/lesson02/yaffs2$ ./patch-ker.sh c m ../linux-4.9.84
Updating ../linux-4.9.84/fs/Kconfig
Updating ../linux-4.9.84/fs/Makefile

make menuconfig

 Device Drivers  --->Input device support  --->[*]   Touchscreens  ---><*>   Samsung S3C2410/generic touchscreen input driver  # 开启触摸屏支持[*] Watchdog Timer Support  --->< >   S3C2410 Watchdog  # 关闭看门狗,要不然系统会一直重启Graphics support  --->[*] Bootup logo  --->[*]   Standard 16-color Linux logo  # 选中该项,取消其他项<*> Memory Technology Device (MTD) support  --->< >   FTL (Flash Translation Layer) support  # 取消选中,要不然会出现警告:ftl_cs: FTL header not found< >   NFTL (NAND Flash Translation Layer) support # 取消选中,要不然会出现警告:ftl_cs: < >   INFTL (Inverse NAND Flash Translation Layer) support # 取消选中,要不然会出现警告:ftl_cs: <*>   NAND Device Support  ---><*>   NAND Flash support for Samsung S3C SoCs[*]     Samsung S3C NAND Hardware ECC  # 开启NAND的硬件ECC校验File systems  ---> [*] Miscellaneous filesystems  ---><*>   yaffs2 file system support  # 开启yaffs2文件系统支持

make uImage

安装 sudo apt-get install u-boot-tools

使用gcc4.3.3 和 busybox1.6编译出来的根文件系统可以在ubuntu 上nfs挂载,但是在window 挂载无法工作。

使用gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf 和 busybox1.33.1编译出来的根文件系统无法工作

定位uboot 和kernel debug  问题

打开在内核中配置CONFIG_DEBUG_USER=y,并在uboot 启动参数bootargs 中添加 user_debug=31,打开全部调试信息,例如 setenv bootargs console=ttySAC0,115200 user_debug=31   saveenv

错误是未定义指令

linux-4.9.84\arch\arm\kernel\traps.c

#ifdef CONFIG_DEBUG_USERif (user_debug & UDBG_UNDEFINED) {pr_info("%s (%d): undefined instruction: pc=%p\n",current->comm, task_pid_nr(current), pc);__show_regs(regs);dump_instr(KERN_INFO, regs);}
#endif

使用反汇编工具将rootfs下可执行文件linuxc 进行反汇编

ym@ym:~/work/tq2440/lesson02/rootfs$ arm-linux-gnueabihf-objdump -D -S linuxrc > tes

找到错误指令 000f30a4

f30a4:   e300c000    movw    ip, #0

看不出指令有什么问题。。

更换arm gcc为 4.3.3版本,重新制作根文件系统,可用。

arm-gcc 必须定制化,自己制作 4.9.1

修改IIC

arch\arm\mach-s3c24xx\mach-mini2440.c

/** I2C devices*/
static struct at24_platform_data at24c02 = {.byte_len  = SZ_2K / 8,   /* 2Kbits / 8 = 256bytes */.page_size  = 8,           /* at24c02 page size = 8 */.flags = 0,
};static struct i2c_board_info mini2440_i2c_devs[] __initdata = {{I2C_BOARD_INFO("24c02", 0x50),.platform_data = &at24c02,},
};

添加蜂鸣器

/* BEEP */static struct s3c24xx_led_platdata mini2440_beep_pdata = {.name       = "beep",.gpio       = S3C2410_GPB(0),.flags        = S3C24XX_LEDF_TRISTATE,
};static struct platform_device mini2440_beep = {.name     = "s3c24xx_led",.id      = 5,.dev       = {.platform_data  = &mini2440_beep_pdata,},
};

TQ2440之移植linux 内核相关推荐

  1. Linux内核移植漫谈——你不是第一个想移植Linux内核的人

    Jack:在读大学的时候我想过移植Linux操作系统. 我:现在呢? Jack:我还是想移植Linux操作系统.你教我移植吧. 我:你知道什么是"Linux内核移植"吗? Jack ...

  2. linux内核移植开发板,mini2440学习之(一)-------移植linux内核

    请 登录 后使用快捷导航 没有帐号?注册 阅 4622|回 2 最后登录2013-8-22 在线时间22 小时 威望2878分 芯积分608分(兑换) E金币好友 发表于2009-9-22 15:02 ...

  3. 为AM335x移植Linux内核主线代码——了解dts

    问题一:以前的Linux Kernel如何描述硬件,现在又如何描述呢? 在以前的内核版本中: 1)内核包含了对硬件的全部描述: 2)bootloader会加载一个二进制的内核镜像,并执行它,比如uIm ...

  4. linux 内核 网卡驱动 移植,Linux内核移植步骤_添加DM9000网卡驱动(设备树).docx

    Linux内核移植步骤_添加DM9000网卡驱动(设备树) Linux内核移植步骤2015年05月13日星期三上午 11:05往设备树中添加网卡驱动:1.选平台,指定交叉编译工具链:(1).在Make ...

  5. linux 内核 网卡驱动 移植,linux内核移植步骤添加dm9000网卡驱动(设备树).docx

    linux内核移植步骤添加dm9000网卡驱动(设备树).docx LINUX内核移植步骤2015年05月13日星期三上午1105往设备树中添加网卡驱动1.选平台,指定交叉编译工具链1.在MAKEFI ...

  6. 第二部分 s3c2440 移植linux内核 添加网卡支持 yaffs2文件系统支持

    三.内核的移植 说明:针对的是百问网的jz2440 gcc:4.9.1 1.移植内核 首先,下载源码包:https://www.kernel.org/ 现在时间为2014年12月20日其主界面截图为: ...

  7. zedboard移植linux内核,[干货]手把手教你用Zedboard学习Linux移植和驱动开发

    作者:殷建飞 本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计 ...

  8. mini2440移植linux内核,mini2440的 linux内核移植

    mini2440的linux内核移植 电脑主机系统:Ubuntu 9.04 mini2440开发板bootloader:supervivi 交叉编译器使用友善之臂提供的符合EABI标准的交叉编译器ar ...

  9. go移植linux内核书名叫啥,Go语言移植Linux内核数据结构hlist

    hlist(哈希链表)可以通过相应的Hash算法,迅速找到相关的链表Head及节点. 在有些应用场景,比Go标准库提供的list(一种双向链表)更合适. 依照list.h中的源码,我实现了一个Go语言 ...

最新文章

  1. WinXP下At,Schtask和Eventtriggers命令实例(一)
  2. 百度云盘上传文件和下载文件慢的解决办法
  3. android+apk+修改+签名文件位置,Jenkins打包android应用时自动签名apk详解
  4. 【leetcode 968. 监控二叉树】解题报告
  5. vue学习笔记(三)
  6. RTT线程管理篇——rtt线程恢复
  7. 安装oracle失败,停止在76%
  8. mysql索引级别快慢_面试小点-MySQL 的两种索引方法如何提高查询速度
  9. Angular 响应式表单 patchValue和setValue
  10. mongoDB对没有字段的记录新增字段
  11. MSP430常见问题之开发工具类
  12. smali 添加资源
  13. 学校培训课程预约报名登记收缴费用小程序开发制作
  14. 未来教育计算机书,未来教育计算机二级
  15. JDK8之后下一个版本使用什么及JDK版本的简单介绍
  16. SparkSQL Analyzed实例源码解析
  17. 超简单的scrapy实现ip动态代理与更换ip
  18. Kubernetes 节点弹性伸缩开源组件 Amazon Karpenter 实践:部署GPU推理应用
  19. 雾霾不散,课就不得不停?
  20. Hadoop-Hive常用,命令

热门文章

  1. 网页编程代码书写规范
  2. 江苏省2022年普通高校专转本选拔考试——计算机专业大类专业综合基础理论试卷
  3. cad图纸怎么打印?办公常备软件
  4. 【赠书】如何解释人工智能?12位AI领域专家合著新书,值得一读!
  5. Python 凯利公式 — 最优投资本金计算
  6. PhotoSwipe之参数options(3)
  7. 一般PNG图片压缩的Java实现
  8. 开鸿蒙激洪声什么意思,库伦旗库伦幼儿园毕业季—开笔礼仪式
  9. Neural art:用机器模仿梵高
  10. 基于随机森林的假新闻检测项目