编写C代码

  1. #include <stdio.h>
  2. #include "ohos_init.h"
  3. #include "ohos_types.h"
  4. void Hello_World(){
  5. printf("hello world!\r\n");
  6. }
  7. APP_FEATURE_INIT(Hello_World);
  • 想要使用printf得引入#include<stdio.h>
  • 你要调用APP_FEATURE_INIT来启动Hello_World应用程序的话,需要添加#include "ohos_init.h"头文件

    编写编译构建文件

    1. static_library("myapp"){
    2. sources = [
    3. "hello_world.c"
    4. ]
    5. include_dirs = [
    6. "//utils/native/lite/include"
    7. ]
    8. }
  • static_library 中指定业务模块的编译结果,为静态文件libmyapp.a(lib(static_library里的名字).a),开发者更具实际情况编写

  • sources中指定静态库.a所依赖的.c文件以及路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。
  • include_dirs中指定sources 所需要的.h文件路径。

通过官网来配置路径,打开applcations/BearPi/BearPi-HM_Nano/sample来创建

  1. touch hello_world.c
  1. chmod 777 hello_world.c
  1. touch BUILD.gn

再来书写

  1. #include <stdio.h>
  2. #include "ohos_init.h"
  3. void hello_world(void){
  4. printf("Hello World\r\n");
  5. }
  6. APP_FEATURE_INIT(hello_world);

编写模块编译构建文件BUILD.gn

./applcations/BearPi/BearPi-HM/sample下的BUILD.gn文件中添加代码

  1. # Copyright (c) 2020 Nanjing Xiaoxiongpai Intelligent Technology Co., Ltd.
  2. # Licensed under the Apache License, Version 2.0 (the "License");
  3. # you may not use this file except in compliance with the License.
  4. # You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software
  9. # distributed under the License is distributed on an "AS IS" BASIS,
  10. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. # See the License for the specific language governing permissions and
  12. # limitations under the License.
  13. import("//build/lite/config/component/lite_component.gni")
  14. lite_component("app") {
  15. features = [
  16. #"A1_kernal_thread:thread_example",
  17. #"A2_kernel_timer:timer_example",
  18. #"A3_kernel_event:event_example",
  19. #"A4_kernel_mutex:mutex_example",
  20. #"A5_kernel_semaphore:semaphore_example",
  21. #"A6_kernel_message:message_example",
  22. #"B1_basic_led_blink:led_example",
  23. #"B2_basic_button:button_example",
  24. #"B3_basic_pwm_led:pwm_example",
  25. #"B4_basic_adc:adc_example",
  26. #"B5_basic_i2c_nfc:i2c_example",
  27. #"B6_basic_uart:uart_example",
  28. #"C1_e53_sf1_mq2:e53_sf1_example",
  29. #"C2_e53_ia1_temp_humi_pls:e53_ia1_example",
  30. #"C3_e53_sc1_pls:e53_sc1_example",
  31. #"C4_e53_sc2_axis:e53_sc2_example",
  32. #"C5_e53_is1_infrared:e53_is1_example",
  33. #"D1_iot_wifi_ap:wifi_ap",
  34. #"D2_iot_wifi_sta_connect:wifi_sta_connect",
  35. #"D3_iot_udp_client:udp_client",
  36. #"D4_iot_tcp_server:tcp_server",
  37. #"D5_iot_mqtt:iot_mqtt",
  38. #"D6_iot_cloud_oc:oc_mqtt",
  39. #"D7_iot_cloud_onenet:onenet_mqtt",
  40. #"D8_iot_cloud_oc_smoke:cloud_oc_smoke",
  41. #"D9_iot_cloud_oc_light:cloud_oc_light",
  42. #"D10_iot_cloud_oc_manhole_cover:cloud_oc_manhole_cover",
  43. #"D11_iot_cloud_oc_infrared:cloud_oc_infrared",
  44. #"D12_iot_cloud_oc_agriculture:cloud_oc_agriculture",
  45. #"D13_iot_cloud_oc_gps:cloud_oc_gps",
  46. #添加这么一段代码
  47. "my_app:myapp"
  48. ]
  49. }

如果Liunx中的hpm dist编译失败可以执行以下操作

  1. cp gn所在目录/gn /usr/bin #在gn目录下执行
  1. > gn --version
  2. < 1717 (2f6bc197)

image.png
ninja也是一样
image.png

出现
image.png
说明成功了
编译好的文件在工程目录下/out/BearPi-HM_Nano/Hi3861_wifiiot_app_allinone.bin
需要用到的工具是[HiBurn](https://v27.51cto.com/down.php?path=attach/202012/79a72ac64a22c5b5a7b450dee91ba7dc2cc3f2.zip&skey=zZL7t_Y3b7KgGleomQBsgg&stime=1654752016&type=hm&sname=HiBurn.zip)
到这一步,你无论如何都要进行映射了

映射

安装Samba

  1. sudo apt-get install samba
  1. sudo vim /etc/samba/smb.conf
  1. [HarmonyOS_Code]
  2. path = #code源码路径
  3. available = yes
  4. valid users = chentianyu #自己的用户名
  5. read only = no
  6. browsable = yes
  7. public = yes
  8. writable = yes
  1. sudo smbpasswd -a chentianyu #chentianyu : 当前用户

错误:
image.png
正确:
image.png

  1. sudo /etc/init.d/smbd restart

image.png
这样子就可以把文件夹映射到电脑上了
image.png
image.png
注意: 账号是你自己的用户名;密码是Samba设置的密码。**path上面的[] : [HarmonyOS_Code]**
所以这个映射文件是可以更改的

  1. [HarmonyOS_Code]
  2. path = /home/chentianyu/openHarmony/learn #要映射的文件路径
  3. available = yes
  4. valid users = chentianyu #自己的用户名
  5. read only = no
  6. browsable = yes
  7. public = yes
  8. writable = yes

所以这个路径是随意更改的

烧录

以下为例 :
image.png

点击图上的Connect,得到下图结果 :
image.png
按下开发板上的复位按键
image.png
如果你不点击上图的Disconnect按键的话,只要你一按开发复位按键就会烧录,你也可以点击取消

查看结果

可以通过MobaXterm来查看串口和Linux的ssh连接(我的下载链接)

  • Session : 可以使用ssh等连接Linux
    • ssh: ssh连接
    • Serial: 串口连接
      • 选择烧录的com口
      • bps:选择115200

这时在按下开发版的复位按键
image.png