рдПрд╕рдЯреАрдПрдо 32 рдкрд░ рд▓реВрдЖ

рдирдорд╕реНрдХрд╛рд░!

рдХрднреА-рдХрднреА рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдБ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрд╕рдЯреАрдПрдо 32 рдкрд░ рд▓реБрдЖ рджреБрднрд╛рд╖рд┐рдпрд╛ (рдорд╛рдирдХ рдирд╣реАрдВ, рдПрд▓реБрдЖ) рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ ред рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓реБрд╕реЙрдХреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрд▓рдИрдбреА рдХреЛ рдЭрдкрдХрд╛рддреЗ рд╣реИрдВ, рдФрд░ http рдХреЗ рд╕рд╛рде рднреА рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред



рд▓реБрдЖ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдХреА рджреБрднрд╛рд╖рд┐рдпрд╛ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣рд▓реНрдХрд╛ рд╣реИ, рдФрд░ рдПрдХ рдореБрдлреНрдд рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╣реИред рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, Embox рдХреЗ рддрд╣рдд, qemu i386 рдкрд░ Lua рд╕рдорд░реНрдерди рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣рд▓реНрдХрд╛ рд╣реИ рдФрд░ POSIX- рд╕рдВрдЧрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП Lua рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдЬреИрд╕рд╛ рд╣рдордиреЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ Pjsip , OpenCV , Qt рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛ ред

рдореИрдВ рдареАрдХ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ рдХрд┐ рдЬрдм рд╕реЗ рд╣рдо рд▓реБрд╕рдХреЗрдЯ рд╕рдорд░реНрдерди рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо stm32f4- рдбрд┐рд╕реНрдХрд╡рд░реА (1 рдПрдордмреА рдлреНрд▓реИрд╢, 192 рдХреЗрдмреА рд░реИрдо) рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ , рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ - stm32f7- рдЦреЛрдЬ(1 рдПрдордмреА рдлреНрд▓реИрд╢, 320 рдХреЗрдмреА рд░реИрдо рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрд╕рдбреАрдЖрд░рдПрдПрдо)ред рдЗрд╕реА рд╕рдордп, рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рд▓реБрдЖ рдХрд╛ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдЖрд╕рд╛рдиреА рд╕реЗ stm32f4 (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдкрд░ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рддреИрдпрд╛рд░ рдХрд░реЗрдВ - nth рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛:

function fib(n)
    if n < 3 then
        return 1
    else
        return fib(n - 1) + fib(n - 2)
    end
end

print("fib(7) = " .. fib(7))

рдЖрдЗрдП рдЗрд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рд▓рдЧреАред рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ Embox рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рддрд╛рдЬрд╛ рд▓реБрдЖ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред рдореИрдВрдиреЗ 5.3.5 рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ "рд▓рд┐рдирдХреНрд╕ рдмрдирд╛рдПрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рднрдВрдбрд╛рд░ рд╕реЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ fib.lua рдХреЛ рдЪрд▓рд╛рдПрдВ:

$ valgrind --tool=massif --massif-out-file=fib.massif lua fib.lua
$ ms_print fib.massif > fib.out

рдЕрдм рдЖрдк fib.out рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдвреЗрд░ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреА рдЕрдзрд┐рдХрддрдо рдорд╛рддреНрд░рд╛ рд▓рдЧрднрдЧ 30 Kb рд╣реИред рдпрд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд▓реЗрдЦ "рд░реИрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ", рдХрд╛рдлреА рдХрдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд▓реБрдЖ-рдорд╢реАрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд╕рдордпред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, 30 Kb рдЙрддреНрд╕рд╛рд╣рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 320 Kb рд╣реИред

рдЕрдм Embox рдХреЗ рд▓рд┐рдП рдмрд╛рдВрд╣ / stm32f746g-search-lua рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВ:

$ make confload-arm/stm32f746g-discovery-lua
$ make -j $(nproc)

рдмреЛрд░реНрдб рдкрд░ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдмрд┐рд▓реНрдб / рдмреЗрд╕ / рдмрд┐рди / рдЗрдордмреЙрдХреНрд╕ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд┐рдХреА рдФрд░ рд░рди рдкрд░ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ :

embox> lua fib.lua 
fib(7) = 13

рдмрдврд╝рд┐рдпрд╛, рд╕рдм рдХреБрдЫ рдмрд┐рд▓реНрдХреБрд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╣реИ (рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ :))ред

рдЪрд▓реЛ рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рдЕрдм рдиреЗрдЯрд╡рд░реНрдХ рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд╣реАрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ HTTP / GET рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓реБрд╕рд╛рдХреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рддрдм рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рддреИрдпрд╛рд░ рдкреИрдХреЗрдЬ ("sudo apt-get install lua-socket") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред

HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

local http = require("socket.http")

if not arg or not arg[1] then
    print("lua http_request.lua <url>")
    os.exit(0)
end

local body, code = http.request(arg[1])
print(code)
print(body)

os.exit(code == 200)

рдлрд┐рд░ рд╕реЗ, рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

lua http_request.lua http://example.com

рдХреЛрдб 200 рдФрд░ рдкреЗрдЬ рдХрдВрдЯреЗрдВрдЯ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ред рдЙрд╕ рд╕реНрдореГрддрд┐ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдлрд┐рд░ рд╕реЗ рд╡реЗрд▓рдЧреНрд░рд┐рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдвреЗрд░ рдкрд░ рдкреАрдХ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдмрдврд╝рдХрд░ 242 Kb рд╣реЛ рдЧрдИ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдореБрдЭреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ stm32f4 рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ stm32f7 рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ - 320 Kb рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрднреА рднреА рдПрдХ OS рдПрдХ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╣реИ, рдореИрдВрдиреЗ рдмрд╛рд╣рд░реА SDRAM рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╣рдо рд░реИрдо рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдвреЗрд░ (рдФрд░ рдПрд╕рдбреАрдЖрд░рдПрдПрдо рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд) рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВред

    include embox.mem.static_heap(heap_size=0x10000)
    include embox.mem.fixed_heap(heap_size=0x40000, heap_start=0x60000000)

рд╣рдо stm32f7- рдбрд┐рд╕реНрдХрд╡рд░реА рдкрд░ рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ, рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЪрд▓реЛ рдЕрдВрдд рдореЗрдВ рдПрд▓рдИрдбреА рдХреЛ "рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ" рдЭрдкрдХрд╛рддреЗ рд╣реИрдВред

local socket = require("socket")

port = arg[1] or 1027
udp = assert(socket.udp())
assert(udp:setsockname('*', port))
print("Lua UDP server started on port " .. port .. "...")
while 1 do
    cmd, ip, port = assert(udp:receivefrom())
    print("Execute '" .. cmd .. "' from " .. ip .. ":" .. port)
    os.execute(cmd)
end

рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рд╕реЗ UDP рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ os.execute () рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдХрдорд╛рдВрдб рдЬрд┐рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдПрдХ рдкрд┐рди рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВрдЧреЗред рдпрд╣ Embox рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ GPIO рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, stm32f7-disco рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ "pin gpioi 1 рдЯреЙрдЧрд▓" рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ GPIOI рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓рдирд╛ред

рд▓реНрдпреВрд╕реЙрдХреЗрдЯ рд╕реЗ рдПрдХ рдорд╛рдирдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

echoclnt.lua
-----------------------------------------------------------------------------
-- UDP sample: echo protocol client
-- LuaSocket sample files
-- Author: Diego Nehab
-----------------------------------------------------------------------------
local socket = require("socket")

host = "localhost"
port = 1027
if arg then
    host = arg[1] or host
    port = arg[2] or port
end

udp = assert(socket.udp())
assert(udp:setpeername(host, port))
print("Using remote host '" ..host.. "' and port " .. port .. "...")
while 1 do
    line = io.read()
    if not line or line == "" then os.exit() end
    assert(udp:send(line))
end


рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкрд╣рд▓реЗ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рд╡реИрд▓реЗрдЧреНрд░рд┐рдВрдб рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдвреЗрд░ рдкрд░ рдкреАрдХ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рд▓рдЧрднрдЧ 70 Kb рд╣реИ, рдЬреЛ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ (30 Kb) рдХреЗ рдорд╛рдорд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди HTTP (242 Kb) рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдХрдо рд╣реИред

рддреБрд░рдВрдд Embox рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд▓рд┐рдирдХреНрд╕ рдкрд░:

$ lua echoclnt.lua 192.168.0.128 1027
Using remote host '192.168.0.128' and port 1027...
pin gpioi 1 toggle
pin gpioi 1 toggle

Embox рдкрд░:

embox>                                                   
embox>lua udp_server.lua                                                        
Lua UDP server started on port 1027...
Execute 'pin gpioi 1 toggle' from 192.168.0.102:34300
Execute 'pin gpioi 1 toggle' from 192.168.0.102:34300

рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рдо stm32f7- рдбрд┐рд╕реНрдХрд╡рд░реА рдкрд░ Lua + luasocket рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдФрд░ рдЙрдирдХреА рдорджрдж рд╕реЗ, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рджреВрд░ рд╕реЗ рдПрд▓рдИрдбреА рдХреЛ рдЭрдкрдХрд╛рдПрдВред рдФрд░ рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд░ рд╕рдордп рдмрдЪрд╛ рд╕рдХрддреА рд╣реИрдВред

рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдРрд╕реА рдПрд▓реБрдЖ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдмрд┐рдирд╛ рдУрдПрд╕ рдХреЗ рдирдВрдЧреЗ рдзрд╛рддреБ рдкрд░ рдЪрд▓рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕рдХреА рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реАрдорд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд░реНрдерди: рдпреВрдбреАрдкреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЕрднреА рдХреЗ рд▓рд┐рдП "рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ"ред рджреВрд╕рд░реЗ, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА stm'ku рдкреНрд░рдХрд╛рд░ F3, F4 (рдХреЗрд╡рд▓ F1) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рд╕рд╣рдордд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдФрд░ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдПрд▓реБрдЖ рдмреЗрд╢рдХ рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдиреАрдЪ рд╣реИред

рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИрдВред

Embox рдХреА рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдБ рднреА рд╣реИрдВ - рдЕрдЬрдЧрд░ (рдЯрд┐рдиреАрдкреА), Ruby (mruby), Tclред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ :)

рд╣рдорд╛рд░реЗ рд╕рдВрдкрд░реНрдХ:
рдиреНрдпреВрдЬрд╝рд▓реИрдЯрд░: embox-ru@googlegroups.com
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ: t.me/embox_chat

All Articles