u-boot移植(十三)---代码修改---裁剪及环境变量 二
一、错误处理
上一节遇到一个错误:

print一下:

发现我们在jz2440.h中静态写的网络参数都没有写进去。
dm9000 address not set。 dm9000的地址未设置。

这里对应两个函数:
static int eth_pre_unbind(struct udevice *dev) 和 int eth_write_hwaddr(struct eth_device *dev, const char *base_name, int eth_number)
这里两个函数对应着宏 CONFIG_DM_ETH。在文件中查找一下,这个宏定义的是什么:

config中没有设置,则运行的应该是后面一个函数。后面一个函数是设置硬件地址。
打印地址处的代码如下:
#ifdef CONFIG_NET_RANDOM_ETHADDR
net_random_ethaddr(dev->enetaddr);
printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
dev->name, eth_number, dev->enetaddr);
#else
printf("\nError: %s address not set1.\n",
dev->name);
return -EINVAL;
#endif
env_enetaddr 是从eth_getenv_enetaddr_by_index此函数中获取到的。
eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr); int eth_getenv_enetaddr_by_index(const char *base_name, int index,
uchar *enetaddr)
{
char enetvar[];
sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index);
return eth_getenv_enetaddr(enetvar, enetaddr);
}
从几个函数中我们可以知道,如果我们的dev->enetaddr是0,则就会打印那条错误信息。
试了好几个方法,都未成功设置,先放置在这里,进行其他的工作。
二、nand分
u-boot中输入mtdparts命令:


jz2440.h中定义宏:
定义宏 CONFIG_CMD_MTDPARTS 打开 mtdparts命令
修改run_main_loop函数:

mtdparts_init() 函数的作用就是构造分区,这些分区都是用数组表示的。
查看其他地方的设置分区,仿照写入,如下:

编译运行,结果如下:

这里有个提醒:mtdparts variable not set, see 'help mtdparts' no partitions defined
这是因为没有带参数,下面已经打印出分区了。
执行两条命令建立分区,如下:

擦除分区:

加入代码,自动执行分区的两条命令:
static int run_main_loop(void)
{
#ifdef CONFIG_SANDBOX
sandbox_main_loop_init();
#endif
// mtdparts_init(); /* 分区命令初始化 */
run_command("mtdparts default",); /* 自动执行分区命令 */
/* main_loop() can return to retry autoboot, if so just run it again */
for (;;)
main_loop();
return ;
}
编译运行就可以看到效果了。
三、加入kernel启动命令行
就两条命令:

执行bootm就可以启动内核了
u-boot移植(十三)---代码修改---裁剪及环境变量 二的更多相关文章
- u-boot移植(十三)---代码修改---裁剪及环境变量 一
一.内核裁剪 内核的裁剪首先就是修改我们的配置文件,即 include/configs/jz2440.h 文件,里面定义的很多宏,我们也许用不上的就要去掉. /* * (C) Copyright 20 ...
- linux修改当前用户环境变量永久生效
在linux环境中,修改当前用户环境变量,且永久生效的方法如下. 1,编辑~/.bash_profile文件 1 2 3 # Get the aliases and functions 4 if [ ...
- 如何快速有效的修改java的环境变量
之前已经修改过jdk的环境变量,,,,在/etc/profile下,,, export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera export PATH=${J ...
- 在c代码中获取用户环境变量
1 extern char ** environ 这是一个字符串数组,最后一个元素是null,即\0. 2 在代码中的使用方法 直接extern char **environ,然后 直接environ ...
- Linux目录终章,单用户模式修改密码、环境变量、第三方软件安装
目录 今日内容概要 内容详细 解析映射文件 磁盘挂载文件 开机加载脚本 系统启动级别 使用单用户模式修改密码 变量加载文件 登录提示信息 第三方软件安装目录(编译安装目录) 系统日志目录 保存系统运行 ...
- 代码修改shader Properties uniform变量
2.4 Shader的数据接口:属性和 uniform变量 如果我们想设定一个特定的值到Shader,即为了在实例化Shader为Material时,可以通过为属性赋值达到创建具体对象的目的, ...
- java 代码中设置 临时 环境变量
System.setProperty("hadoop.home.dir", "D:\\software\\software_install\\dev_install\\h ...
- 详解Windows不重启使环境变量修改生效(经典)
在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,需重启系统才能使之生效.有没有什么方法可让它即时生效呢?下面介绍一种方法: 以修改环境变量“PATH”为 ...
- Ubuntu 12 修改环境变量
Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效. 修改用户环境变量 用户环境变量通常被存储在下面的文件中: ...
随机推荐
- String()与toString的区别
1..toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined 代码示例: var a = null.toString()--报错 var b = underf ...
- 【Java】 枚举类
如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...
- codeforces166E
Tetrahedron CodeForces - 166E You are given a tetrahedron. Let's mark its vertices with letters A, B ...
- 使用正则真正的修改TP5的config.php文件
来源 https://www.kancloud.cn/manual/thinkphp5/118026 问题 前台传值后台使用Config::set()方法写入config.php文件,但是并没有真正的 ...
- codeforces 793B. Igor and his way to work
B. Igor and his way to work time limit per test 3 seconds memory limit per test 256 megabytes input ...
- 【刷题】AtCoder Regular Contest 001
A.センター採点 题意:给一个只包含1.2.3.4的字符串,求出现次数最多和最少的字符 做法:还能怎么做... #include<bits/stdc++.h> #define ui uns ...
- 挂载文件系统出现"kernel panic..." 史上最全解决方案
问:挂载自己制作的文件系统卡在这里: NET: Registered protocol family 1 NET: Registered protocol family 17 VFS: Mounted ...
- 自学Zabbix5.1 zabbix maintenance维护周期
自学Zabbix5.1 zabbix maintenance维护周期 1. 概述 你可以定义维护周期在主机或主机组里.这里有2种维护状态: 依旧收集数据 继续对目标的监控数据的收集 暂停收集数据 ...
- Shell基础知识(三)
Shell中变量的作用域: 在当前Shell会话中使用,全局变量. 在函数内部使用,局部变量. 可以在其他Shell会话中使用,环境变量. 局部变量: 默认情况下函数内的变量也是全局变量 #!/bin ...
- 洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 解题报告
P1337 [JSOI2004]平衡点 / 吊打XXX 题目描述 有 \(n\) 个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.\(X\)处就是公共的绳结.假设 ...