arm-linuxgcc version 4.3.2 经过试验,最高可以编译到 linux-4.1.36 ,在高的版本会有错误 ,可能是 GCC 编译器版本较低造成。

解压比较麻烦还要装一个 xz xz -d ,我是用 7z-zip 在电脑上解好,传 tar 上去解包。
修改 makefile
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-

find -name *24*_defconfig 查找出来有的配置项
./arch/arm/configs/s3c2410_defconfig
./arch/arm/configs/mini2440_defconfig

s3c2410_defconfig 也包含 2440 machid
vi /arch/arm/mach-s3c24xx/mach-smdk2440.c 修改 晶振为 12000000
vi /arch/arm/mach-s3c24xx/common-smdk.c 修改 nand flash 分区信息

 static struct mtd_partition smdk_default_nand_part[] = {
[] = {
.name = "uboot",
.size = SZ_256K,
.offset = ,
},
[] = {
.name = "env",
.offset = MTDPART_OFS_APPEND,
.size = SZ_128K,
},
[] = {
.name = "kernel",
.offset = MTDPART_OFS_APPEND,
.size = SZ_2M,
},
[] = {
.name = "rootfs",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
}
};

make s3c2410_defconfig
make menuconfig
启用 EABI
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
make uImage
Image arch/arm/boot/uImage is ready
cp arch/arm/boot/uImage /nfs_fs

查看 u-boot 2016 中配置的机器 ID
/arch/arm/lib/bootm.c boot_jump_linux()
从 gd 中取出来
unsigned long machid = gd->bd->bi_arch_number;

在 /board/samsung/smdk2440/smdk2440.c 中进行设置

/arch/arm/include/asm/mact-types.h 中定义
#define MACH_TYPE_SMDK2410 193

s = getenv("machid");
从 env 中取出来

随意乱设个 machid 启用就会报错,显示出来所有 可用的 machid
set machid 12345
nfs 0x32000000 192.168.1.100:/nfs_fs/uImage;bootm 0x32000000

因为是未知的 machid 所以报错
000007cf MINI2440
0000016a SMDK2440

..........
set machid 16a

加上波特率配置,不加也会乱码
set bootargs root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200

bdinfo  可以查看 gd 信息

开启串口调试,有错误就能显示出来,否则什么也不显示。不知道哪里出错了。
Device Drivers
Character devices
Serial drivers
Samsung SoC serial debug

制作 文件系统 参考之前的博文 http://www.cnblogs.com/ningci/p/5261567.html

1, 制作 jffs2 文件系统
mkfs.jffs2 -n -s 2048 -e 128KiB -d new_1.24 -o new_1.24.jffs2

nfs 0x30000000 192.168.1.100:/nfs_fs/new_1.24.jffs2
nand erase.part root
nand write.jffs2 0x30000000 260000 3bc24c

set bootargs root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2
set machid 16a
nfs 0x30000000 192.168.1.100:/nfs_fs/uImage;bootm 0x30000000

烧写试验 能挂载文件系统

2, 添加 yaffs2 支持
http://www.yaffs.net/
git clone git://www.aleph1.co.uk/yaffs2
下载解压,打补丁
./patch-ker.sh c m /home/linux-4.1.24
make uImage
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_readpage_nolock':
fs/yaffs2/yaffs_vfs.c:286: error: 'struct file' has no member named 'f_dentry'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_hold_space':
fs/yaffs2/yaffs_vfs.c:484: error: 'struct file' has no member named 'f_dentry'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_release_space':
fs/yaffs2/yaffs_vfs.c:502: error: 'struct file' has no member named 'f_dentry'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_file_write':
fs/yaffs2/yaffs_vfs.c:594: error: 'struct file' has no member named 'f_dentry'
fs/yaffs2/yaffs_vfs.c:606: error: 'struct file' has no member named 'f_dentry'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_file_flush':
fs/yaffs2/yaffs_vfs.c:730: error: 'struct file' has no member named 'f_dentry'
fs/yaffs2/yaffs_vfs.c: At top level:
fs/yaffs2/yaffs_vfs.c:780: error: 'new_sync_read' undeclared here (not in a function)
fs/yaffs2/yaffs_vfs.c:781: error: 'new_sync_write' undeclared here (not in a function)
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_iterate':
fs/yaffs2/yaffs_vfs.c:1730: error: 'struct file' has no member named 'f_dentry'
make[2]: *** [fs/yaffs2/yaffs_vfs.o] Error 1
make[1]: *** [fs/yaffs2] Error 2
make: *** [fs] Error 2

fs/yaffs2/yaffs_vfs.c 中 file 结构体定义变了
f_dentry 替换为 f_path.dentry

780 缺少函数

搜了一下有这个函数 /fs/read_write.c
static ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos)
前面加有 static 外面用不了,经过试验,发现不使用这2行也正常工作。所以改为如下。
#if 0
.read = new_sync_read,
.write = new_sync_write,
#endif

制作 yaffs2 文件
mkyaffs2image new_1.24 new_1.24.yaff2

nfs 0x30000000 192.168.1.100:/nfs_fs/new_1.24.yaff2
nand erase.part root
nand write.yaffs 0x30000000 260000 797640

set bootargs root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
set machid 16a
nfs 0x30000000 192.168.1.100:/nfs_fs/uImage;bootm 0x30000000

linux-3.4.112 正常,不用任何修改,打上 yaffs 补丁就能使用

yaffs 操作比 jfss 快不少。

最后 内核裁剪,没难度,去掉不用的东西变小就行。

s3c2440 移值新内核 linux-4.1.36的更多相关文章

  1. dm9000c 移值新内核 linux-4.1.24

    错误 1 /home/dm9000/dm9dev9000c.c:309: error: conflicting types for 'phy_read'include/linux/phy.h:637: ...

  2. s3c2440 移值u-boot-2016.03 第6篇 支持mtd yaffs 烧写

    1, 解决启动时的错误 Warning - bad CRC, using default environment 搜索发现 在 /tools/env/fw_env.c 中 /* 放在NAND FLAS ...

  3. s3c2440 移值u-boot-2016.03 第2篇 支持Nand flash启动

    1, 要求:在4K 的代码以内,完成 NOR NAND 类型判断,初始化 NAND 复制自身到 SDRAM ,重定向. 2, 在 /arch/arm/cpu/arm920t/ 文件夹里 添加一个 in ...

  4. s3c2440 移值u-boot-2016.03 第3篇 支持Nor flash 识别

    当选择,NOR flash 启用时,才可以访问 NOR FLASH ./common/board_r.c 364 line:initr_flash()flash_size = flash_init() ...

  5. s3c2440 移值u-boot-2016.03 第1篇 新建单板

    目前除RC版外,最新的就是 u-boot-2016.03.tar.bz2 ,大概看了几个年份的u-boot 发现,现在 更像是 linux kernel .有 menuconfig . 对比2012年 ...

  6. s3c2440 移值u-boot-2016.03 第5篇 支持dm9000 识别

    1, 通过查看 /drivers/net/Makefile 发现想要编译上,需要添加宏 /include/configs/smdk2440.h 中添加 #define CONFIG_DRIVER_DM ...

  7. s3c2440 移值u-boot-2016.03 第4篇 支持NAND flash 识别

    1, /include/configs/smdk2440.h 中添加 #define CONFIG_CMD_NAND 编译 drivers/mtd/nand/built-in.o: In functi ...

  8. linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)

    内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核 ...

  9. linux新内核的freeze框架以及意义【转】

    转自:https://blog.csdn.net/dog250/article/details/5303442 linux的电源管理发展非常迅速,比如在挂起到内存的时候,系统会冻结住所有的进程,也就是 ...

随机推荐

  1. find命令详解

    find命令详解   来源: ChinaUnix博客 日期: 2008.07.25 16:04 (共有条评论) 我要评论   [url=http://www.sudu.cn/web/host.php] ...

  2. android中的Dialog

    一.Dialog概述 二.使用系统自带的Dialog 1.新建Builder AlertDialog.Builder builder = new AlertDialog.Builder(StoryAc ...

  3. Struts2整理+课堂代码+注意事项

    1.在Struts配置文件的<package   中的 namespace默认是namesopace="/". 当生成namespace=“abc/”(abc是自己定义的,类 ...

  4. 使用explain查看mysql查询执行计划

    explain语句: 字段解释: type:     all(全表扫描)     ref() possible_keys:     预测使用什么列做为索引 key:     实际使用的key     ...

  5. 自己编写php框架(一)

    这两天一直在琢磨如何做一个php模板,将前台html页面和php代码分割开来.虽然现在市面上有各种各样的php模板,但还是想自己编写一个体验一下. 之前一直写到了将替换完php代码的含有php代码的h ...

  6. unity3d插件Daikon Forge GUI 中文教程2-基础控件Label的使用

    我们先来设置 UI Root 中的如下:屏幕大小为1024*768 2.1  新建一个Label 控件 先来看看Control Properties (基本上是所有控件都共用的)的以后不再介绍,参数: ...

  7. CKPT进程工作机制

    CKPT进程工作示意图 2.CKPT进程工作机制 检查点进程被触发的条件为: a> 当发生日志组切换时: b>  用户提交了事务时(commit): c>  Redo log buf ...

  8. 2016HUAS暑假集训题1 H - N皇后问题

    Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种合 ...

  9. js闭包初体验

      /* 闭包的定义:一个内部函数里变量作用域生命周期延续,直接访问一个函数里面的私有属性 闭包的作用:解决变量作用域延续的问题,同时解决全局变量冲突的问题 */ //1.定义内部函数,私有函数 fu ...

  10. php 代码优化提高MySQl的运行效率

    [mysqld] log="d:/temp/mysql.log" log_slow_queries="d:/temp/mysql_slow.log" long_ ...