摘要:Curl是一个文件传输工具,常用于数据上传和下载,本demo基于Cloud_STM32F429IGTx_FIRE开发板演示了在curl demo中调用curl提供的API来下载一个文件,并将其保存到本地文件中。

本文分享自华为云社区《LiteOS组件尝鲜—玩转Curl》,作者:W922。

基本介绍

Curl是一个文件传输工具,常用于数据上传和下载,本demo基于Cloud_STM32F429IGTx_FIRE开发板演示了在curl demo中调用curl提供的API来下载一个文件,并将其保存到本地文件中。

Curl demo的运行需要嵌入式设备支持网络和文件系统功能,Cloud_STM32F429IGTx_FIRE开发板适配了lwip网络协议栈和fatfs文件系统,curl API的更多示例请参考:https://github.com/curl/curl/tree/master/docs/examples。

参数配置

修改demos/utility/curl/curl_demo.c中的文件下载地址,文件保存路径。 请根据实际的下载地址进行修改。curl demo中的url下载地址和文件路径如下:

#define URL_ADDRESS    "192.168.3.37"
#define FILE_PATH "/fatfs/curl.txt"

使能Curl Demo

拷贝Cloud_STM32F429IGTx_FIRE开发板默认配置文件,在LiteOS源码根目录下,拷贝tools/build/config/Cloud_STM32F429IGTx_FIRE.config,并重命名为.config。使用Linux系统作为编译环境,执行如下命令完成配置文件的拷贝和重命名:

cp tools/build/config/Cloud_STM32F429IGTx_FIRE.config .config

本demo使用SD存储下载的测试文件,所以需要使能FATFS文件系统并设置为SD卡模式,在LiteOS源码根目录下执行命令:make menuconfig

按如下路径使能各组件及demo

Components  --->
FileSystem --->
-*- Enable FATFS (NEW)
Choose Peripheral Driver (SD Card) --->
(X) SD Card
Network --->
-*- Enable Lwip
Enable Ipv4 Or Ipv6 (Enable Ipv4) --->
(X) Enable Ipv4
Utility --->
-*- Enable Curl
Demos --->
Utility Demo --->
[*] Enable Curl Demo

保存退出后,LiteOS会从github自动下载curl源码,并从gitee上的LiteOS组件仓库里下载对应的patch包,并将patch打入源码,此过程的详细流程,请查阅components/download.sh文件。

注:下载需要Linux主机可以访问互联网,并安装git工具。

编译运行Curl Demo

在LiteOS源码根目录下执行如下命令编译LiteOS工程:make clean;make -j

编译成功后将在out/Cloud_STM32F429IGTx_FIRE/lib目录下生成curl的库文件libcurl.a和本demo的库文件libcurl_demo.a,系统镜像文件为Huawei_LiteOS.bin。将系统镜像文件烧录到开发板,重启开发板demo即开始运行,串口输出结果如下所示:

********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.0.0
build data : Mar 19 2021 15:19:22
**********************************
osAppInit
cpu 0 entering scheduler
app init!
Hello, welcome to liteos demo!
lwip test init ok.
Curl demo task start to run.
Fatfs file system mount success
Huawei LiteOS #
*** readed /fatfs/curl.txt 315 data ***
[file info]
**************************************
Curl demo task finised.

注:demo运行成功后,会将下载的文件保存到本地文件curl.txt中(具体内容参考实际情况,此处用[file info]代替)。

结语

未来我们还会持续新增更多组件、开发板、架构、特性等。

感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:https://gitee.com/LiteOS/LiteOS/issues

为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如图所示。

点击关注,第一时间了解华为云新鲜技术~

快来一起玩转LiteOS组件:Curl的更多相关文章

  1. 一起玩转玩转LiteOS组件:TinyFrame

    摘要:TinyFrame是一个简单的用于解析串口(如 UART.telnet.套接字等)通信数据帧的库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转TinyFrame>,作者:Lio ...

  2. 玩转LiteOS组件:玩转Librws

    摘要:Librws是一个跨平台的websocket客户端,使用C语言编写. 本文分享自华为云社区<LiteOS组件尝鲜-玩转Librws>,作者: W922 . 本期小编为大家带来Lite ...

  3. 带你尝鲜LiteOS 组件EasyFlash

    摘要:EasyFlash是一个开源的轻量级嵌入式闪存库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转EasyFlash>,作者:Lionlace . 基本介绍 EasyFlash是一 ...

  4. 《微信小程序七日谈》- 第三天:玩转Page组件的生命周期

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 前两篇 ...

  5. 【原创】C#玩高频数字彩快3的一点体会

    购彩风险非常高,本人纯属很久以前对数字高频彩的一点研究.目前已经远离数字彩,重点研究足球篮球比赛资料库和赛果预测. 这是一篇在草稿箱保存了1年多的文章,一直没发现,顺便修改修改分享给大家.以后会有更多 ...

  6. 解析Markdown文件生成React组件文档

    前言 最近做的项目使用了微前端框架single-spa. 对于这类微前端框架而言,通常有个utility应用,也就是公共应用,里面是各个子应用之间可以共用的一些公共组件或者方法. 对于一个团队而言,项 ...

  7. .NET平台开源项目速览(2)Compare .NET Objects对象比较组件

    .NET平台开源项目速览今天介绍一款小巧强大的对象比较组件.可以更详细的获取2个对象的差别,并记录具体差别,比较过程和要求可以灵活配置. .NET开源目录:[目录]本博客其他.NET开源项目文章目录 ...

  8. 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 微信小 ...

  9. openstack手动玩转

    <一,preface Important Project Network> openstack or all most cloud env Network desgine  is so m ...

  10. Compare .NET Objects对象比较组件

    Compare .NET Objects对象比较组件 阅读目录 1.Compare .NET Objects介绍 2. Compare .NET Objects注意事项 3.一个简单的使用案例 4.三 ...

随机推荐

  1. 1.参考例5.2.1,设计一个序列检测器。功能是检测出串行输入数据Sin中的4位二进制序列0101(自左至右输入),当检测到该序列时,输入Out=1;没有检测到该序列时,输入Out=0。要求不考虑序列重叠,如010101的序列中只包含一个0101序列。

    设计块: module Detector2 ( input CP,Sin,nCR, output reg Out ); reg [1:0] Current_state,Next_state; para ...

  2. pbootcms 后台内容列表搜索功能扩展及增加显示字段功能

    应项目要求,一个内容模型下栏目不宜分的层级过多,如新闻模块,分2022.2023.2024年度,每年度下分12个月,这样就是2层栏目,再依类别(科技.动漫.电影...)划分层级,栏目数量较多,而且不易 ...

  3. Welcome to YARP - 5.身份验证和授权

    目录 Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 ...

  4. Android反编译之修改应用包名

    前言 近期看B站数码区这条视频 [大米]破处理器,它能行吗?K50电竞版评测_哔哩哔哩_bilibili 时,发现了UP主的一个比较骚的操作: 嗯?apk文件可以直接拿来使用修改包名的?作为 Andr ...

  5. 面向对象java前三次pta作业

    目录: 1.前言 2.设计与分析 3.踩坑心得 4.主要困难及改进建议 5.总结 1.前言 面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它以对 ...

  6. 总结---Django部分

    Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. Django内置的ORM跟框架内的其他模块耦合程 ...

  7. Modbus 转PROFINET 网关 TS-180在级联通讯中的应用

    一.硬件连接 TS-180 具有冗余网口功能,用户可以通过级联方式连接来进行通讯,其他资料可参考说明书.将西门子 S7-300 PLC 通过网线与5台 TS-180 串联,用户可以选择下列两种连接方式 ...

  8. JAVA学习week3

    本周由于c++小学期作业.未能按时学习JAVA 主要复习了基本语法 hello word 输出语法 输出格式的选择,进制的转换,注释的选择 还预习了变量相关的知识点

  9. Serializable是什么?为什么在Entity层要实现Serializable接口

    我在做房产信息管理系统时用到了Serializable接口 Serializable含义: 一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化. Serializ ...

  10. 黑客玩具入门——4、漏洞扫描与Metasploit

    1.Legion漏洞扫描分析工具 Legion是Sparta的一个分支,它是一个开源的.易于使用的.超级可扩展的.半自动的网络渗透测试框架.它是一款Kali Linux系统默认集成的Python GU ...