前两篇请跳转到
1:https://blog.csdn.net/qq_44766222/article/details/124164895
2:https://blog.csdn.net/qq_44766222/article/details/124172280

项目场景:

基于sama5d27的嵌入式产品的软件开发,下面将描述一些我调试中遇到的一些问题,这个项目属于是我第一个linux应用项目,调试中遇到了一些小白性的问题,整体的调试思路为:分析源码-修改源码-编译源码-运行-分析源码。

编译文件系统不能执行patchelf

查找原因是本机的库文件链接出了,主要是 libstdc++.so.6这个库问题,找到库文件存放的地方,执行 sudo ln -s libstdc++.so.6.0.24 libstdc++.so.6链接库文件后运行正确。

编译工具问题

官方提供的buildroot默认使用网络下载的编译器,但是由于网络问题下载不成功,编译不通过,改用我们自己安装的交叉编译器,再修改menuconfig配置,红色框内为本地交叉编译器的路径。

文件下载工具

由于设计的嵌入式板卡不带有网络通讯功能,故不能使用网口传输数据,仅有一个串口与外界通讯,我们可以利用lrz协议通过串口传输文件,例如传输库文件、应用程序、调试数据等,在编译文件系统的时候使能:br2_package_lrzsz=y.

根文件系统制作

我们使用的是spiflash,需要将buildroot编译生成的文件系统制作成.jffs2格式的根文件系统,buildroot生成的文件在rootfs文件夹下面,下面我们将通过以下几步实现根文件系统的生成;

sudo chown i rootfs/ -R
sudo /usr/sbin/mkfs.jffs2 -d /home/i/work/developmentboard/fs-jffs2/rootfs -s 0x1000 -e 0x10000 -p 0xA00000 -o rootfs.jffs2
sudo chown i rootfs.jffs2
chmod 777 rootfs.jffs2

使用mkfs.jffs2 -h指令可以查看各个参数的含义,这里需要注意的是-e和-s参数,需要根据芯片手册来配置,在uboot启动的时候也可以看到具体的数值。

系统启动问题

制作好文件系统后,下载到板卡,发现每次启动后程序会停止在Initializing random number generator… done.这句话,不能进入系统,而接上仿真器启动,系统却能够正常进入,最后阅读内核源码,发现程序只要一运行sleep函数,程序就会停止。最终定位是系统时钟的问题,系统在运行sleep函数后,会将系统时钟切换到慢时钟工作,我们最开始在bootstrap里面配置的慢时钟使用的是外部时钟,而我们板卡实际没有接外部时钟,只能选择系统内部时钟,接仿真器的时候会提供一个外部的32k时钟,所以接仿真器系统运行正确,修改bootstrap后系统能够正常启动。

应用程序串口使用

调试程序时,串口无法发送0x030x13等指令,原因是串口初始化的时候默认配置了流接收,对特殊字符进行了处理,按照以下配置后,程序运行正确:

options.c_iflag &= ~(BRKINT |ICRNL|INPCK|ISTRIP|IXON);
options.c_oflag &= ~OPOST;
options.c_cflag |= CLOCAL|CREAD;
options.c_lflag &= ~(ICANON|ECHO|ECHOE|ISIG);

大家有问题可以相互讨论,我也是小白,微信 yucaohua001

调试at91-sama5d27遇到的一些问题(3)相关推荐

  1. qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建

    初衷是想在qemu中调试linux内核.本文是基于现有的条件搭建一个开发环境.这里有几个先决条件: 1,qemu支持特定的CPU版本 2,linux kernel 中最好有相应的default_con ...

  2. Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志

    Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...

  3. Linux下CAN总线通信调试记录

    1. 概述     CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线.同轴电缆或光导纤维 ...

  4. 嵌入式软件之裸板与驱动调试

    目录 一.裸板调试 1.1 点灯法 1.2 串口调试 1.3 JTAG原理 1.4 JTAG调试 二.驱动调试 2.1 printk调试 2.1.1 printk原理 2.1.2 printk的使用 ...

  5. 大容量Flash型AT91系列ARM核微控制器

    AT91FR40162是美国Atmel公司生产的AT91系列微控制器中的一员,具有ARM7TDMI核.大容量Flash存储器以及片内SRAM和外围.这种微控制器的特点是高性能--32位RISC体系结构 ...

  6. 海信linux系统信息,海信公交车数据采集系统   调试信息

    海信公交车数据采集系统   调试信息 (2014-07-20 09:02:46) 标签: 消息 缓冲 海信 公交车 控制命令 RomBOOT >AT91Bootstrap loading fro ...

  7. USB-HOST调试纪实

    Linux下的硬件驱动--USB设备(上)(驱动配置部分) http://www.ibm.com/developerworks/cn/linux/l-usb/index1.html Linux下的硬件 ...

  8. ATMEL公司的AT91RM9200调试手册

    LINUX常用命令 压缩.解压部分 1.         压缩目录)tar czf DirName.tgz DirName ( 2.         针对以gz为结尾的压缩文件)gzip –d fil ...

  9. 腾讯云接入LoRaWAN并调试

    这里写目录标题 一,前言 二,创建产品步骤 2.1 创建产品 2.2 物模型设计 2.3 设备开发设计 2.4 设备调试设计 三,添加网关 三,节点,网关,服务器联调 3.1 下行 3.2 上行 一, ...

  10. dev c++ 调试时候发生软件崩溃解决办法

    dev c++ 调试时候发生软件崩溃解决办法 安装好dev cpp,准备调试的时候发现软件崩溃,这种情况很好解决.只要在工具菜单中点开编译选项,找到代码生成/优化一栏,将链接器的"产生调试信 ...

最新文章

  1. Git 常用操作(3)- 本地分之显示、创建、切换、合并和删除操作
  2. GitHub上README.md教程
  3. 最近火爆全网!这个 Python 项目很骚气!
  4. python终端中退格键,方向键不能使用
  5. python怎么安装numpy库-python怎么安装numpy库
  6. 我的第一个用Hibernate框架写的小例子
  7. log python_基于Python log 的正确打开方式
  8. php是范例,php基础范例
  9. Dubbo 和 HSF 在阿里巴巴的实践:携手走向下一代云原生微服务
  10. MATLAB – TreeBagger example
  11. java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述
  12. matlab中D A1在哪,A1=d(1:15,:);A2=d(16:30,:);A3=
  13. 九九乘法表——C语言
  14. 北大博士后放弃985大学副教授教职,回老家从政任区长,引热议!
  15. 串口与并口有什么区别?
  16. 微型计算机原理与接口技术
  17. MES系统软件体系架构
  18. 数据分析03-(数值型描述统计及项目分析)
  19. 图解步骤PyInstaller实践过程
  20. Mysql(Centos7.9)2022最新学习(二):DDL语句

热门文章

  1. 什么是腾讯云图数据可视化?它有哪些特性以及应用场景?
  2. QFIL的烧录、读写
  3. Android系统 ——高通平台刷机流程(qfil)
  4. Hi3531D调试手记(六):IT6801实现HDMI转码BT1120输入VI
  5. 数学建模大赛考什么计算机基础知识,华为杯数学建模竞赛
  6. 自然语言处理之词袋模型Bag_of_words
  7. 芯片烧录软件Android版,HiTool官方版
  8. 远程服务器虚拟显示器配置方法
  9. JSONArray.fromObject(list) list转json报错
  10. MOSSE 相关滤波器详解