一、错误处理

  上一节遇到一个错误:

  

  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移植(十三)---代码修改---裁剪及环境变量 二的更多相关文章

  1. u-boot移植(十三)---代码修改---裁剪及环境变量 一

    一.内核裁剪 内核的裁剪首先就是修改我们的配置文件,即 include/configs/jz2440.h 文件,里面定义的很多宏,我们也许用不上的就要去掉. /* * (C) Copyright 20 ...

  2. linux修改当前用户环境变量永久生效

    在linux环境中,修改当前用户环境变量,且永久生效的方法如下. 1,编辑~/.bash_profile文件 1 2 3 # Get the aliases and functions 4 if [ ...

  3. 如何快速有效的修改java的环境变量

    之前已经修改过jdk的环境变量,,,,在/etc/profile下,,, export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera export PATH=${J ...

  4. 在c代码中获取用户环境变量

    1 extern char ** environ 这是一个字符串数组,最后一个元素是null,即\0. 2 在代码中的使用方法 直接extern char **environ,然后 直接environ ...

  5. Linux目录终章,单用户模式修改密码、环境变量、第三方软件安装

    目录 今日内容概要 内容详细 解析映射文件 磁盘挂载文件 开机加载脚本 系统启动级别 使用单用户模式修改密码 变量加载文件 登录提示信息 第三方软件安装目录(编译安装目录) 系统日志目录 保存系统运行 ...

  6. 代码修改shader Properties uniform变量

    2.4 Shader的数据接口:属性和 uniform变量     如果我们想设定一个特定的值到Shader,即为了在实例化Shader为Material时,可以通过为属性赋值达到创建具体对象的目的, ...

  7. java 代码中设置 临时 环境变量

    System.setProperty("hadoop.home.dir", "D:\\software\\software_install\\dev_install\\h ...

  8. 详解Windows不重启使环境变量修改生效(经典)

    在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,需重启系统才能使之生效.有没有什么方法可让它即时生效呢?下面介绍一种方法: 以修改环境变量“PATH”为 ...

  9. Ubuntu 12 修改环境变量

    Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效. 修改用户环境变量 用户环境变量通常被存储在下面的文件中: ...

随机推荐

  1. Angular injector注入器

    <!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...

  2. 多条件查询 仿淘宝URL传参方式

    ---恢复内容开始--- 最近项目在做一个电商网站,网站涉及到前后台交互的多条件查询,类似于淘宝的多条件查询,图片如下 此类查询主要涉及到的问题有: 1.如何记忆查询参数 2.如何前后台传值 3.中文 ...

  3. Delphi导出数据的多种方法

    //Dxdbgrid,则直接用SaveToexcel即可//使用 ExcelWithOdbc 控件function TDataModule1.GetDataToFile(DsData: TObject ...

  4. xhtml和html的差別

    xhtml和html主要區別: 元素必須正確嵌套: 元素必須正確閉合: 必須要有根元素: 元素必須使用小寫. xhtml語法: 屬性名必須小寫: 屬性值必須帶引號: 使用id代替name: lang屬 ...

  5. C#實現XML的增刪查改

    命名空間:using System.Xml; 1.查找某個節點是否存在: private XmlDocument xmldoc; private string mod="1"; p ...

  6. Java之相对路径找不到文件问题解决方法

    1.问题: 在程序需要通过相对路径引用文件,使用Junit可以正常执行,但是直接使用main方法找不到对应问题. 2.分析: 因为不同运行方式所使用的环境变量中的用户工作目录不同所致. 3.解决: 修 ...

  7. BUPT2017 wintertraining(15) #2 题解

    这场有点难,QAQ.补了好久(。• ︿•̀。) ,总算能写题解了(つд⊂) A. Beautiful numbers CodeForces - 55D 题意 ​ 求\([l,r](1\le l_i\l ...

  8. android第二课:运行你的应用

    如果你按照前面课程创建了 Android 项目,它包含了可以立即运行的 "Hello World"源代码文件. 由两该条件来决定如何运行你的应用:你是否拥有运行着 Android ...

  9. 【BZOJ1814】Ural 1519 Formula 1 (插头dp)

    [BZOJ1814]Ural 1519 Formula 1 (插头dp) 题面 BZOJ Vjudge 题解 戳这里 上面那个链接里面写的非常好啦. 然后说几个点吧. 首先是关于为什么只需要考虑三进制 ...

  10. c++ io标准库2

    转自:http://www.2cto.com/kf/201110/109445.html 接下来我们来学习一下串流类的基础知识,什么叫串流类? 简单的理解就是能够控制字符串类型对象进行输入输出的类,C ...